Source code for mightypy.data_structures._linked_list

"""
Linked list setup
"""


class Node:
    def __init__(self, data):
        self.data = data
        self._next = None

    @property
    def next(self):
        return self._next

    @next.setter
    def next(self, new_next):
        self._next = new_next

    def __repr__(self):
        return f"Node Value : {self.data}"


[docs] class LinkedList: def __init__(self): self.head = None self.tail = None
[docs] def append(self, value): """Insert at the end. Args: value (object): Value to insert in linked list """ temp = Node(value) if self.head is None: self.head = temp elif self.tail is None: self.tail = temp self.head.next = self.tail else: self.tail.next = temp self.tail = self.tail.next
[docs] def push(self, value): """Push at the begining. Args: value (object): Value to push to list """ temp = Node(value) if self.head is None: self.head = temp elif self.tail is None: self.tail = self.head self.head = temp self.head.next = self.tail else: temp.next = self.head self.head = temp
[docs] def traverse(self): """Traverse the linked list. Returns: node_values (list) : linked list values """ node_values = [] current_node = self.head while current_node: node_values.append(current_node.data) current_node = current_node.next return node_values
def __len__(self): size = 0 curr_node = self.head while curr_node: size += 1 curr_node = curr_node.next return size
if __name__ == "__main__": l_list = LinkedList() for i in range(10): l_list.push("push" + str(i)) for i in range(10): l_list.append("insert" + str(i)) print(l_list.traverse()) print(len(l_list))