
利用Python实现链表
发布日期:2021-05-08 01:40:00
浏览次数:13
分类:精选文章
本文共 2238 字,大约阅读时间需要 7 分钟。
class Node: ''' 相当于C语言中的结构体,定义了一个结点类型 ''' def __init__(self,data): self.data=data self.next=None # 初始化为None,如果后面不赋新值则一直为Noneclass LinkedList: ''' __init__(self):属于类的构造函数或者初始化方法,每当创建一个这种类 的实例,这个函数就会被执行一次 ''' def __init__(self): self.size=0; self.head=None self.last=None #指向尾结点的指针 def get(self,index): if index<0 or index >=self.size: raise Exception('超出链表节点范围') p=self.head #p是一个指针 for i in range(index): p=p.next #不同类之间的变量调用 return p # P指向index def insert(self,index,data): if index<0 or index >=self.size: raise Exception('超出链表节点范围') node=Node(data) ''' 上一句创建了一个新的结点,并且传入新节点的数据是data node.data=data node.next=None ''' if self.size==0: #空链表 self.head=node self.last=node elif index==0: # 插入头部 node.next=self.head self.head=node elif self.size==index: # 插入尾部 node.next=None # 这句话可以不加,因为在创建结点类时,给next初始值是None,没有这句话,node.next依然等于 None self.last.next=node self.last=node else: #插入中间结点 prve_node=self.get(index-1) node.next=prve_node.next prve_node.next=node self.size += 1 def remove(self,index): if index<0 or index >=self.size: raise Exception('超出链表节点范围') if index==0: # 删除头节点 removed_node=self.head #把要删除的元素保存下来 self.head=self.head.next elif index==self.size-1: # 删除尾结点 prve_node=self.get(index-1) removed_node=prve_node.next prve_node.next=None self.last=prve_node else: # 删除中间结点 prve_node=self.get(index-1) next_node=prve_node.next.next removed_node=prve_node.next prve_node.next=next_node self.size -=1 return removed_node def output(self): p=self.head while p is not None: print(p.data) p=p.nextif __name__=='__main__': linkedList = LinkedList() linkedList.insert(0,3) linkedList.insert(0, 2) linkedList.insert(0, 4) linkedList.insert(3, 1) linkedList.remove(0) linkedList.output()
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年03月20日 05时39分09秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
4 Java 访问控制符号的范围
2021-05-08
第9章 - 有没有替代原因(检验证据)
2021-05-08
VUE3(八)setup与ref函数
2021-05-08
Vue之Element标签页保留用户操作缓存。
2021-05-08
智能合约开发实践(1)
2021-05-08
MATLAB——操作矩阵的常用函数
2021-05-08
CMake自学记录,看完保证你知道CMake怎么玩!!!
2021-05-08
Eigen库中vector.transpose()函数什么意思
2021-05-08
ORB-SLAM2:LocalMapping线程学习随笔【李哈哈:看看总有收获篇】
2021-05-08
ORB-SLAM2:LoopClosing线程学习随笔【李哈哈:看看总有收获篇】
2021-05-08
牛客练习赛56 D 小翔和泰拉瑞亚(线段树)
2021-05-08
NC15553 数学考试(线性DP)
2021-05-08
MySQL隐藏文件.mysql_history风险
2021-05-08
Vue——父组件将方法传递给子组件
2021-05-08
Beautiful Soup基础入门
2021-05-08
js求阶乘
2021-05-08
小程序图片正确使用方式(防止发布之后不显示)
2021-05-08