
python实现单链表
发布日期:2021-05-14 15:19:58
浏览次数:18
分类:精选文章
本文共 4129 字,大约阅读时间需要 13 分钟。
p y t h o n 实 现 单 链 表 python实现单链表 python实现单链表
难点
1.节点构造
class _Node: def __init__(self, e=None, node_next=None): self.e = e self.next = node_next
2.add
def add(self, index, e): if index < 0 or index > self._size: raise ValueError('Add failed. Illegal index.') prev = self._dummy_head for i in range(index): prev = prev.next node = self._Node(e) node.next = prev.next prev.next = node self._size += 1
3.delete
def remove(self, index): if index < 0 or index >= self._size: raise ValueError('Remove failed. Illegal index.') prev = self._dummy_head for i in range(index): prev = prev.next ret = prev.next prev.next = ret.next ret.next = None self._size -= 1 return ret.e
练习三部曲之一
class LinkedList: # 1.节点构造 class _Node: def __init__(self, e=None, node_next=None): self.e = e self.next = node_next def __str__(self): return str(self.e) def __repr__(self): return self.__str__() # 2.成员构造 def __init__(self): self._dummy_head = self._Node() self._size = 0 # 3.魔法方法 def __str__(self): curr = self._dummy_head.next data = [] while curr: data.append(str(curr.e)) curr = curr.next return '(Head) ' + ' -> '.join(data) + ' (Tail)' def __repr__(self): return self.__str__() # 4.返回大小 def get_size(self): return self._size # 5.判空 def is_empty(self): return self._size == 0 # 6.增 def add(self, index, e): if index < 0 or index > self._size: raise ValueError('Add failed. Illegal index.') prev = self._dummy_head for i in range(index): prev = prev.next node = self._Node(e) node.next = prev.next prev.next = node self._size += 1 def add_first(self, e): self.add(0, e) def add_last(self, e): self.add(self._size, e) # 7.删 def remove(self, index): if index < 0 or index >= self._size: raise ValueError('Remove failed. Illegal index.') prev = self._dummy_head for i in range(index): prev = prev.next ret = prev.next prev.next = ret.next ret.next = None self._size -= 1 return ret.e def remove_first(self): return self.remove(0) def remove_last(self): return self.remove(self._size - 1) # 8.改 def setter(self, index,e): if index < 0 or index >= self._size: raise ValueError('Set failed. Illegal index.') curr = self._dummy_head.next for i in range(index): curr = curr.next curr.e = e # 9.查 def get(self, index): if index < 0 or index >= self._size: raise ValueError('Get failed. Illegal index.') curr = self._dummy_head.next for i in range(index): curr = curr.next return curr.e def get_first(self): return self.get(0) def get_last(self): return self.get(self._size - 1) def contains(self, e): curr = self._dummy_head.next while curr: if curr.e == e: return True curr = curr.next return False
练习三部曲之二
class LinkedList: # 1.节点构造 class _Node: def __init__(self, e=None, node_next=None): def __str__(self): def __repr__(self): # 2.成员构造 def __init__(self): # 3.魔法方法 def __str__(self): def __repr__(self): # 4.返回大小 def get_size(self): # 5.判空 def is_empty(self): # 6.增 def add_first(self, e): def add_last(self, e): def add(self, index, e): # 7.删 def remove(self, index): def remove_first(self): def remove_last(self): # 8.改 def setter(self, index,e): # 9.查 def get(self, index): def get_first(self): def get_last(self): def contains(self, e):
练习三部曲之三
class LinkedList: # 1.节点构造 # 2.成员构造 # 3.魔法方法 # 4.返回大小 # 5.判空 # 6.增 # 7.删 # 8.改 # 9.查
发表评论
最新留言
很好
[***.229.124.182]2025年04月18日 17时02分54秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
吴恩达机器学习课程笔记(英文授课) Lv.1 新手村(回归)
2021-05-12
pair的用法
2021-05-12
SQL基本操作命令
2021-05-12
C# WinForm程序退出的方法
2021-05-12
onFailure unexpected end of stream
2021-05-12
Flex 布局的自适应子项内容过长导致其被撑大问题
2021-05-12
PL/SQL 动态Sql拼接where条件
2021-05-12
Lua-table 一种更少访问的安全取值方式
2021-05-12
虚函数
2021-05-12
斐波那契数列两种算法的时间复杂度
2021-05-12
【自学Flutter】4.1 Material Design字体图标的使用(icon)
2021-05-12
C++清空队列(queue)方法
2021-05-12
【换行符】什么时候用cin.get()吃掉输入流中的换行符
2021-05-12
【二叉树】已知后序与中序求先序
2021-05-12
解决Nginx 404 not found问题
2021-05-12
广东外语外贸大学第三届网络安全大赛Writeup
2021-05-12
hadoop 分布式文件系统的计算和高可用
2021-05-12
【Linux】VMware Workstation 不可恢复错误: (vcpu-0)
2021-05-12
VS中 fatal error LNK1123: 转换到 COFF 期间失败 的解决方法
2021-05-12