python3实现链表
2024-10-18 19:26:02
1、链表的实现
a、链表的结构为:
b、链表的实现方法;
#链表结构实现 私有属性_pro_item是指向下个节点的指针,_item为此节点的值
class ChainDemo(): def __init__(self,item = None,pos_item=None): self._item = item
self._pos_item = pos_item if __name__ == '__main__':
chain = ChainDemo('A',(ChainDemo('B',ChainDemo('C',ChainDemo('D')))))
while True:
print(chain._item)
if chain._pos_item != None:
chain = chain._pos_item
else:
break
2、实现对链表的操作(增删)
#链表节点结构实现 私有属性_pro_item是指向下个节点的指针,_item为此节点的值
class Node(): def __init__(self,item = None,pos_item=None): self._item = item
self._next = pos_item def __repr__(self):
'''
用来定义Node的字符输出,
print为输出item
'''
return str(self._item) #单链表实现
class Chain(): def __init__(self):
self._head = None
self.length = 0 #判空
def isEmpty(self):
return self.length == 0 #链表结尾插入
def append(self,item): if isinstance(item,Node):
node = item
else:
node = Node(item) if self._head == None:
self._head = node
else:
be_node = self._head
while be_node._next:
be_node = be_node._next
be_node._next = node
self.length += 1 #插入数据
def insert(self,index,item): if self.isEmpty():
print('this chain table is empty')
return if index<0 or index >= self.length:
print("error: out of index")
return in_node = Node(item)
node = self._head
count = 1 while True:
node = node._next
count += 1
if count == index: next_node = node._next
node._next = in_node
in_node._next = next_node
self.length += 1
return # node = s #删除数据
def delete(self,index): if self.isEmpty():
print('this chain table is empty')
return if index<0 or index >= self.length:
print("error: out of index")
return
# if index == 0
# self._head = None
else:
node = self._head
count = 0
while True:
count += 1
if index == count:
node._next = node._next._next
break
node = node._next self.length -= 1 def __repr__(self):
if self.isEmpty():
print("the chain table is empty")
return
nlist = ""
node = self._head
while node:
nlist += node._item +''
node = node._next
return nlist if __name__ == '__main__':
chain = Chain()
chain.append('A')
chain.append('B')
chain.append('C')
chain.append('D')
chain.append('E')
chain.append('F')
chain.append('G')
chain.insert(4,'p')
chain.delete(3)
print(chain,chain._head._item,chain.length)
最新文章
- Java并发1——线程创建、启动、生命周期与线程控制
- Android 6.0权限改变
- 解决Failed to allocate memory: 8转
- es6学习笔记5--promise
- CSS3绘制旋转的太极图案(一)
- 【云计算】Dockerfile示例模板
- 年轻的团队Mono玩转Dalvik
- 移动端 meta 标签笔记
- 图像JPEG格式介绍
- iPhone 屏幕上的 Home 键在哪里?(已解决)
- GridView获取单个单元格的值
- Visual Studio2015 Community一些必备插件
- WebService- 使用 CXF 开发 SOAP 服务
- vue移动端框架到底哪家强
- windows10 建立ODBC数据源
- java基础知识——网络编程、IO流
- 1.2万事开头hello world+交互+getpass、sys模块初识
- Azkaban介绍+安装部署+实战案例
- java中Double类数字太大时页面正常显示而不要用科学计数法
- linux发送邮件的功能总结