python--自己实现的单链表常用功能
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python--自己实现的单链表常用功能,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2836字,纯文字阅读大概需要5分钟。
内容图文
![python--自己实现的单链表常用功能](/upload/InfoBanner/zyjiaocheng/833/d09d9073aa9e4354835bb0495c979548.jpg)
最近一个月,就耗在这上面吧。
很有收获的。
# coding = utf-8 # 单向链表 class Node: def __init__(self, new_data): self.data = new_data self.next = None def get_data(self): return self.data def set_data(self, new_data): self.data = new_data def get_next(self): return self.next def set_next(self, new_next): self.next = new_next class SingleList: def __init__(self): self.head = None # 作头插入时,需要要注意插入顺序, # 先将节点的netxt设为head,然后,再将节点设为Head。 # 总之。要注意不要丢失next。 def add(self, item): temp = Node(item) temp.set_next(self.head) self.head = temp # 作尾插入时,需要先判断是否为空列表。因为空列表时,没有next。 # 为空列表时,尾插入和头插入代码相同。 # 当不为空时,需要循环到底,再作插入处理 def append(self, item): temp = Node(item) if self.is_empty(): temp.set_next(self.head) self.head = temp else: current = self.head while current.get_next() is not None: current = current.get_next() current.set_next(temp) # 指定位置插入节点 def insert(self, pos, item): # 相当于头插入 if pos <= 0: self.add(item) # 相当于尾插入 elif pos >= self.size(): self.append(item) else: temp = Node(item) count = 0 current = self.head # 先将游标指到要插入位置 while count < pos - 1: count += 1 current = current.get_next() # 先将节点插入游标下一节点,再将当前游标指向节点 temp.set_next(current.get_next()) current.set_next(temp) # 删除指定节点数据 def remove(self, item): previous = None current = self.head while current is not None: if current.get_data() == item: # 在找到节点之后,需要判断是否为首节点 # 因为首节点时,还没有Previous这个变量 if current == self.head: self.head = current.get_next() else: previous.set_next(current.get_next()) break else: previous = current current = current.get_next() # 查找指定数据是否存在 def search(self, item): current = self.head found = False while current is not None: if current.get_data() == item: found = True current = current.get_next() return found def is_empty(self): return self.head is None def __len__(self): return self.size() def size(self): count = 0 current = self.head while current is not None: count += 1 current = current.get_next() return count def show(self): current = self.head while current is not None: print(current.get_data(), end=' ') current = current.get_next() print('\n') if __name__ == '__main__': s_list = SingleList() print(s_list.is_empty()) s_list.add(5) s_list.add(4) s_list.add(76) s_list.add(23) s_list.show() s_list.append(47) s_list.show() s_list.insert(0, 100) s_list.show() s_list.insert(99, 345) s_list.show() s_list.insert(3, 222) s_list.show() s_list.remove(47) s_list.show() print(s_list.search(76)) s_list.show() print(s_list.is_empty()) print(s_list.size()) print(len(s_list))
C:\Users\Sahara\.virtualenvs\test\Scripts\python.exe C:/Users/Sahara/PycharmProjects/test/python_search.py True 23 76 4 5 23 76 4 5 47 100 23 76 4 5 47 100 23 76 4 5 47 345 100 23 76 222 4 5 47 345 100 23 76 222 4 5 345 True 100 23 76 222 4 5 345 False 7 7 Process finished with exit code 0
内容总结
以上是互联网集市为您收集整理的python--自己实现的单链表常用功能全部内容,希望文章能够帮你解决python--自己实现的单链表常用功能所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。