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)

最新文章

  1. Java并发1——线程创建、启动、生命周期与线程控制
  2. Android 6.0权限改变
  3. 解决Failed to allocate memory: 8转
  4. es6学习笔记5--promise
  5. CSS3绘制旋转的太极图案(一)
  6. 【云计算】Dockerfile示例模板
  7. 年轻的团队Mono玩转Dalvik
  8. 移动端 meta 标签笔记
  9. 图像JPEG格式介绍
  10. iPhone 屏幕上的 Home 键在哪里?(已解决)
  11. GridView获取单个单元格的值
  12. Visual Studio2015 Community一些必备插件
  13. WebService- 使用 CXF 开发 SOAP 服务
  14. vue移动端框架到底哪家强
  15. windows10 建立ODBC数据源
  16. java基础知识——网络编程、IO流
  17. 1.2万事开头hello world+交互+getpass、sys模块初识
  18. Azkaban介绍+安装部署+实战案例
  19. java中Double类数字太大时页面正常显示而不要用科学计数法
  20. linux发送邮件的功能总结

热门文章

  1. PYTHON深拷贝与浅拷贝
  2. [C]C语言中的指针和内存泄漏几种情况
  3. js设置睡眠N秒后再执行
  4. Python traceback的优雅处理
  5. FlashBack 闪回
  6. Linux 用户(user)和用户组(group)管理概述
  7. hishlib 算法加密
  8. 用echarts写的轨迹图demo
  9. 一个简单的binlog恢复测试
  10. 饮冰三年-人工智能-linux-06 系统启动流程及安全