# coding=utf-8 # import time class Node: def __init__(self, value): self.val = value self.next = None class List: def __init__(self, head=None): #头结点定义为私有变量 self._head = head def is_empty(self): """判断链表是否为空""" if not self._head: return True else: return False def length(self): """获取列表的长度""" if not self._head: return 0 else: length = 0 cur = self._head while True: length += 1 if not cur.next: break else: cur = cur.next return length def travel(self): """遍历整个链表""" #空链表直接返回 if self.is_empty(): return 0 else: #复制一份链表,不影响原来的结构 cur = self._head while True: print (id(cur), cur.val) if not cur.next: break else: cur = cur.next def add(self, val): """尾部添加节点""" node = Node(val) if not self._head: self._head = node else: cur = self._head while True: if cur.next: cur = cur.next else: break cur.next = node def insert(self, pos, item): """在指定位置进行插入""" #大于链表现有的长度直接在尾部插入 if pos > self.length(): cur = self._head while True: if not cur.next: break else: cur = cur.next cur.next = item elif pos == 0: item.next = self._head self._head = item else: index = 0 cur = self._head while True: if index == pos - 1: b_node = cur.next cur.next = item item.next = b_node break else: index += 1 cur = cur.next def remove(self, node): """删除节点""" if self.is_empty(): return elif node == self._head: self._head = self._head.next else: cur = self._head while True: if not cur.next: break if node == cur.next: cur.next = cur.next.next break else: cur = cur.next def update(self, node, value): """修改指定节点的值""" if not self._head: return else: cur = self._head while True: if node == cur: cur.val = value break if not cur: break else: cur = cur.next if __name__ == "__main__": myList = List() myList.add(10) myList.add(200) myList.add(300) myList.add(300) myList.add(400) node = Node(1) node_300 = Node(300) myList.insert(300, node_300) myList.insert(30, node) # myList.remove(node_300) myList.travel() # print "==========================" # myList.remove(node_300) # myList.travel() print "=========================" myList.update(node_300, 3000000) myList.travel()
python实现单链表
最新推荐文章于 2024-04-30 15:10:46 发布