链表
创建时间:2019-08-11 13:34
字数:787
阅读:
单向链表 单向链表也叫单链表,是链表中最简单的一种形式,他的每一个节点包含两个域,一个信息域和一个链接域。这个链表指向链表中的下一个节点,而最后一个节点的链接域则执行一个空值。
节点实现 单链表的操作
is_empty()链表是否为空
length()链表的长度
travel()遍历整个链表
add(item)链表头部添加元素
append(item)链表尾部添加元素
insert(ops, item)指定位置添加元素
remove(item)删除节点
seach(item)查找节点是否存在
_x
:单前置下划线,私有化属性或方法,禁止通过form modules import * 导入,但是类和对象可以访问
__xx
:双前置下划线,避免与子类中的属性名冲突,无法在外部直接访问(名字重整所以访问不到),类对象和子类不能访问
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 class Node (object) : """单链表的节点""" def __init__ (self, elem) : self.elem = elem self.next = None class SingleLinkList (object) : """单链表""" def __init__ (self, node=None) : self.__head = node def is_empty (self) : """链表是否为空""" return self.__head is None def length (self) : """链表长度""" cur = self.__head count = 0 while cur is not None : count += 1 cur = cur.next return count def travel (self) : """遍历整个链表""" cur = self.__head while cur is not None : print(cur.elem, end=" " ) cur = cur.next def add (self, item) : """链表表头添加,头插法""" node = Node(item) node.next = self.__head self.__head = node def append (self, item) : """尾插法""" node = Node(item) cur = self.__head if self.__head is None : self.__head = node else : while cur.next is not None : cur = cur.next cur.next = node def insert (self, pos, item) : """指定位置添加元素 :param pos: 从0开始 :param item: """ if pos <= 0 : self.add(item) elif pos > self.length()-1 : self.append(item) else : prior = self.__head count = 0 while count < pos-1 : prior = prior.next count += 1 node = Node(item) node.next = prior.next prior.next = node def remove (self, item) : """删除结点 :param item:00 """ prior = None cur = self.__head while cur is not None : if cur.elem == item: if cur is self.__head: self.__head = cur.next else : prior.next = cur.next print("删除%d成功" % item) break else : prior = cur cur = cur.next else : print("没有这个元素,删除失败" ) def search (self, item) : cur = self.__head count = 0 if cur is None : return print("空的,查找%d失败" % item) else : while cur is not None : if cur.elem == item: return count else : cur = cur.next count += 1 print("查找%d失败,没有这个元素" % item) if __name__ == '__main__' : ll = SingleLinkList() print(ll.is_empty()) print(ll.length()) ll.add(0 ) ll.append(1 ) ll.append(2 ) ll.append(5 ) ll.append(3 ) ll.add(20 ) ll.insert(-1 , 9 ) ll.insert(3 , 90 ) ll.travel() print("\n********************" ) ll.search(3233 ) ll.remove(5 ) ll.travel()
转载请注明来源,欢迎指出任何有错误或不够清晰的表达。可以邮件至gxnucgb@qq.com
文章标题: 链表
文章字数: 787
本文作者: 陈桂彬
发布时间: 2019-08-11, 13:34:16
最后更新: 2019-08-12, 12:18:41
原始链接: https://github.com/gxnucgb/gxnucgb.github.io/2019/08/11/链表/
版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。