class Node: def __init__(self, i): self.next = None self.id = i class Linklist: def __init__(self): self.head = None self.length = 0 def insert_after(self, node): if not self.head: self.head = node else: tailNode = self.getTailNode() if tailNode: self.getTailNode().next = node else: self.head = node self.length += 1 def insert_first(self, node): if self.head == None: self.head = node self.current = node else: temp = self.head.next self.head.next = node node.next = temp self.length += 1 def display(self): self.current = self.head count = 0 while self.current: print('我是第{}个结点: dada={}'.format(count, self.current.id)) self.current = self.current.next count += 1 def getTailNode(self): current_l = self.head while current_l.next: current_l = current_l.next return current_l def pop(self): current = self.head while current.next: if current.next.id == self.getTailNode().id: tmp = current.next current.next = None return tmp current = current.next self.length -= 1 def getLength(self): return self.length def find(self, node): current = self.head count = 1 while current.id != node.id: current = current.next if not current.next: return -1 count += 1 print("该节点是第{}个结点".format(count)) return current def delete(self, node): if self.getLength() > 0: if node.id == self.head.id: if hasattr(self.head.next, 'id') and self.length > 1: self.head = self.head.next else: self.head = None self.length -= 1 else: current = self.head while current: if current.next.id == self.getTailNode().id == node.id: current.next = None return else: if current.next.id == node.id: tmp = current.next current.next = current.next.next tmp.next = None return current = current.next self.length -= 1 else: return -1 link = Linklist() link.insert_first(Node(0)) link.insert_first(Node(2)) link.delete(Node(0)) link.display()
python 实现单向链表(原创请勿转载)
最新推荐文章于 2023-07-26 00:47:03 发布