首页 / PYTHON / python实现简单单链表
python实现简单单链表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python实现简单单链表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2467字,纯文字阅读大概需要4分钟。
内容图文
# -*- coding: utf-8 -*- class Node(object): """节点""" def __init__(self, data): # 数据区 self.data = data # 下一个节点区 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游标,用来移动遍历节点 cur = self.__head # count记录数量 count = 0 while cur: count += 1 cur = cur.next return count def travel(self): """遍历整个链表""" # cur游标,用来移动遍历节点 cur = self.__head while cur: print(cur.data, end=' ') cur = cur.next print() def add(self, elem): """链表头部添加元素,头插法""" node = Node(elem) node.next = self.__head self.__head = node def append(self, elem): """链表尾部添加元素,尾插法""" node = Node(elem) if self.is_empty(): self.__head = node else: cur = self.__head while cur.next: cur = cur.next cur.next = node def insert(self, pos, elem): """指定位置添加元素""" if pos == 0: self.add(elem) elif pos > (self.length()-1): self.append(elem) elif pos < 0: if abs(pos) > self.length(): self.add(elem) else: node = Node(elem) count = 0 cur = self.__head while cur: if (count+abs(pos)) == self.length(): node.next = cur.next cur.next = node break cur = cur.next count += 1 else: node = Node(elem) count = 0 cur = self.__head while (count+1) < pos: cur = cur.next count += 1 node.next = cur.next cur.next = node def remove(self, elem): """删除节点""" if self.is_empty(): return cur = self.__head count = 0 if cur.data == elem: self.__head = cur.next return count, elem while cur.next: if cur.next.data == elem: cur.next = cur.next.next return count+1, elem cur = cur.next count += 1 def is_contain(self, elem): """查找节点是否存在""" cur = self.__head while cur: if cur.data == elem: return True cur = cur.next return False def search(self, elem): """查找节点所在位置""" cur = self.__head count = 0 while cur: if cur.data == elem: return count cur = cur.next count += 1 if __name__ == '__main__': ll = SingleLinkList() ll.travel() print(ll.is_empty()) print(ll.length()) print(ll.remove(1)) ll.add(0) ll.travel() ll.append(1) print(ll.is_empty()) print(ll.length()) ll.append(2) ll.append(3) ll.append(4) ll.append(5) ll.travel() ll.add(8) ll.add(9) ll.add(10) ll.travel() print(ll.search(8)) print(ll.search(3)) print(ll.search(6)) print(ll.search(5)) print(ll.is_contain(8)) print(ll.is_contain(3)) print(ll.is_contain(6)) print(ll.is_contain(5)) ll.travel() print(ll.remove(8)) ll.travel() print(ll.remove(10)) ll.travel() print(ll.remove(5)) ll.travel() print(ll.remove(6)) ll.travel() ll.insert(-3, 0) ll.travel() ll.insert(1, 89) ll.travel()
内容总结
以上是互联网集市为您收集整理的python实现简单单链表全部内容,希望文章能够帮你解决python实现简单单链表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。