Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
 def push(self, data):
     node = Node(data)
     if self.top:
         node.next = self.top
         self.top = node
     else:
         self.top = node
     self.size += 1
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
 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
Ejemplo n.º 9
0

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))
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
 def prepend(self, value):
     newNode = Node(value)
     newNode.next = self.head
     self.head = newNode