# coding:utf-8 class Node: ‘‘‘单链表的节点‘‘‘ def __init__(self,item): self.item = item self.next = None class Link_list: def __init__(self): self._head = None def is_empty(self): ‘‘‘判空‘‘‘ return self._head == None def add(self,item): ‘‘‘头部添加‘‘‘ node = Node(item) node.next = self._head self._head = node def append(self,item): ‘‘‘尾部添加‘‘‘ node = Node(item) #先判空,若为空链表,则_head指向新节点 if self.is_empty(): self._head = node #不为空,则找到尾节点,然后尾节点的next指向新节点 else: cur = self._head while cur.next: cur = cur.next cur.next = node def length(self): ‘‘‘链表长度‘‘‘ if self.is_empty(): return 0 count = 1 cur = self._head while cur.next: count += 1 cur = cur.next return count def travel(self): ‘‘‘遍历‘‘‘ cur = self._head while cur: print(cur.item) cur = cur.next def search(self,item): ‘‘‘查找节点是否存在‘‘‘ cur = self._head while cur: if cur.item == item: return True cur = cur.next return False def insert(self,pos,item): ‘‘‘指定位置插入节点‘‘‘ node = Node(item) #判断插入位置,如果为0,则从头部插入 if pos == 0: self.add(node) return #其它位置,需要找到插入点前面一个节点pre和后面一个节点cur pre = None cur = self._head for i in range(pos): pre = cur cur = cur.next pre.next = node node.next = cur def remove(self,item): ‘‘‘删除节点‘‘‘ pre = None cur = self._head while cur: if cur.item == item: if not pre: self._head = cur.next else: pre.next = cur.next break pre = cur cur = cur.next if __name__ == ‘__main__‘: link = Link_list() print(link.is_empty()) link.add(1) print(link.is_empty()) link.add(2) link.append(3) link.insert(1,2.5) print(link.search(4)) link.travel()
原文:https://www.cnblogs.com/eliwang/p/15154672.html