def insertfirst(self, data): self.counter += 1 newNode = Node(data) if not self.head: self.head = newNode else: newNode.nextNode = self.head self.head = newNode
def insertStart(self, data): self.counter += 1 newNode = Node(data) if not self.head: self.head = newNode else: newNode.nextNode = self.head self.head = newNode
def prepend(self, value): if self.head is None and self.tail is None: self.append(value) else: newNode = Node(value) newNode.next = self.head self.head.prev = newNode self.head = newNode self.length += 1 return self
def prepend(self, value): if self.head is None and self.tail is None: return self.append(value) node = Node(value) node.next = self.head self.head = node self.length += 1 return self
def append(self, value): newNode = Node(value) if self.head is None and self.tail is None: self.head = newNode self.tail = newNode else: self.tail.next = newNode newNode.prev = self.tail self.tail = newNode self.length += 1 return self
def insertEnd(self, data): newNode = Node(data) actualNode = self.head while actualNode.nextNode is not None: actualNode = actualNode.nextNode actualNode.nextNode = newNode
def insertAtIndex(self, index, value): # 需注意以下 index 的處理 if index <= 0: self.prepend(value) return self.display() elif index >= self.length: self.append(value) return self.display() # 走尋到 (index-1) 的元素,再插入新元素 holdNode = self.traverseToIndexNode(index-1) newNode = Node(value) newNode.next = holdNode.next holdNode.next = newNode self.length += 1 return self.display()
def insertlast(self, data): if self.head is None: self.insertfirst(data) return self.counter += 1 newNode = Node(data) actualNode = self.head while actualNode.nextNode is not None: actualNode = actualNode.nextNode actualNode.nextNode = newNode
def insertAtIndex(self, index, value): # 需注意以下 index 的處理 if index == 0: self.prepend(value) return self.display() elif index >= self.length - 1: self.append(value) return self.display() holdNode = self.traverseToIndexNode(index - 1) nextNode = holdNode.next newNode = Node(value) holdNode.next = newNode newNode.prev = holdNode newNode.next = nextNode nextNode.prev = newNode self.length += 1 return self.display()
class ModifyPrint(LinkedList): def reverse_print(self, k=0): if k > 0: s = Stack() current = self.head while current: s.push(current.data) current = current.next while k > 0: k -= 1 print(s.pop()) return l = ModifyPrint() l.add(Node(2)) l.add(Node(21)) l.add(Node(32)) l.add(Node(3)) l.add(Node(8)) l.add(Node(90)) l.reverse_print(3)