def prepend(self, data): cur = self.head new_node = Node(data) new_node.next = self.head if not self.head: new_node.next = new_node else: while cur.next != self.head: cur = cur.next cur.next = new_node self.head = new_node
def append(self, data): new_node = Node(data) cur_node = self.head if not self.head: self.head = new_node new_node.next = self.head # Idk, I can also set this to new_node abi? return while cur_node.next != self.head: cur_node = cur_node.next cur_node.next = new_node new_node.next = self.head
def insert_after_node(self, prev_node, data): new_node = Node(data) if not prev_node: print("Previous mode doesn't exist") return new_node.next = prev_node.next prev_node.next = new_node
def push(self, data): node = Node(data) if self.top: node.next = self.top self.top = node else: self.top = node self.size += 1
def append(self, value): newNode = Node(value) if not self.head: self.head = newNode self.head.next = newNode else: curr = self.head while curr.next != self.head: curr = curr.next curr.next = newNode newNode.next = self.head
def insert(self, item, index): counter = 0 new_node = Node(item) curr_node = self.head prev_node = None while counter < index: counter += 1 prev_node = curr_node curr_node = curr_node.next new_node.next =curr_node if curr_node == self.head: self.head = new_node if prev_node is not None: prev_node.next = new_node self.length += 1
def prepend(self, data): new_node = Node(data) new_node.next = self.head self.head = new_node
current = linked_list.head runner = linked_list.head for x in range(n): if not runner: raise LookupError('Error: n is larger than the linked list.') runner = runner.next while runner: current = current.next runner = runner.next return current # Example Nodes a = Node(1) b = Node(2) c = Node(3) d = Node(4) e = Node(5) a.next = b b.next = c c.next = d d.next = e l = LinkedList() l.head = a print(Nth_to_last_node(l, 1)) # returns e
def reverse_linked_list(linked_list): current = linked_list.head prev = None while current: next = current.next current.next = prev prev = current current = next linked_list.head = prev return linked_list # Example Nodes a = Node(1) b = Node(2) c = Node(3) d = Node(4) e = Node(5) a.next = b b.next = c c.next = d l = LinkedList() l.head = a print(reverse_linked_list(l))
def is_circular(linked_list): slow = linked_list.head fast = linked_list.head while fast.next and fast.next.next: slow = slow.next fast = fast.next.next if slow == fast: return True return False # Example Nodes a = Node(1) b = Node(2) c = Node(3) d = Node(4) e = Node(5) a.next = b b.next = c c.next = d d.next = b # circular node l = LinkedList() l.head = a print(is_circular(l)) # returns true
def prepend(self, value): newNode = Node(value) newNode.next = self.head self.head = newNode