예제 #1
0
 def add_item_at_index(self, index, data):
     new_node = LinkedListNode(data)
     self.count += 1
     if self.head is None:
         self.head = new_node
         self.tail = new_node
         return
     node = self.head
     prev = None
     for i in range(0, index):
         prev = node
         node = node.next
         if node is None:
             break
     if prev:
         prev.next = new_node
         new_node.prev = prev
     else:
         self.head.prev = new_node
         new_node.next = self.head
         self.head = new_node
     if node:
         node.prev = new_node
         new_node.next = node
     else:
         self.tail = new_node
예제 #2
0
 def add_item_top(self, data):
     new_node = LinkedListNode(data)
     if self.head is not None:
         new_node.next = self.head
         self.fix_tail(self.head, new_node)
     else:
         new_node.next = new_node
     self.head = new_node
     self.count += 1
예제 #3
0
 def add_item_bottom(self, data):
     new_node = LinkedListNode(data)
     self.count += 1
     if self.head is None:
         self.head = new_node
         new_node.next = self.head
         return
     node = self.head
     while node.next is not self.head:
         node = node.next
     node.next = new_node
     new_node.next = self.head
예제 #4
0
 def add_item_top(self, data):
     new_node = LinkedListNode(data)
     if self.head is not None:
         new_node.next = self.head
         self.head.prev = new_node
     else:
         self.tail = new_node
     self.head = new_node
     self.count += 1
예제 #5
0
 def add_item_at_index(self, index, data):
     new_node = LinkedListNode(data)
     self.count += 1
     if self.head is None:
         self.head = new_node
         new_node.next = self.head
         return
     node = self.head
     prev = None
     for i in range(0, index):
         prev = node
         node = node.next
         #in the case of being at the bottom of the list we want prev to be the last element, so node will be head.
         if node == self.head:
             break
     if prev:
         prev.next = new_node
     else:
         self.fix_tail(self.head, new_node)
         self.head = new_node
     if node != self.head:
         new_node.next = node
     else:
         new_node.next = self.head
예제 #6
0
 def push(self, data):
     node = LinkedListNode(data)
     if self.head:
         node.next = self.head
     self.head = node
     self.num_items += 1