python 单向链表_python3实现单向链表

#-*- coding:utf-8 -*-#Author: Bing Xu

classNode(object):def __init__(self,data):

self.data=data

self.next=NoneclassSingle_Linklist(object):def __init__(self):'''链表初始化'''self.head_node=Nonedefis_empty(self):'''判断链表是否为空

:return:'''

return self.head_node ==Nonedefget_len(self):'''获取链表对象的长度

:return: 链表长度'''counter=0

cur=self.head_nodewhilecur:

counter+= 1cur=cur.nextreturncounterdefclear_list(self):'''清除链表所有元素

:return: 空链表'''self.head_node=Nonedefappend(self,data):'''链表尾部追加节点

:param data: 追加节点的内容

:return:'''node=Node(data)ifself.is_empty():

self.head_node=nodeelse:

cur=self.head_nodewhilecur.next:

cur=cur.next

cur.next=nodedefinsert(self,i,data):'''插入新的节点

:param i: 待插入的位置,0 <= i <= self.length

:param data: 待插入的节点数据

:return:'''node=Node(data)

length=self.get_len()

cur=self.head_nodeif length >=i:if i ==0:

self.head_node=node

node.next=curelse:for item in range(i-1):

cur=cur.next

temp=cur.next

cur.next=node

node.next=tempelse:returnFalsedefremove(self,data):'''删除链表内容为data的所有节点

:param data: 要删除的内容

:return:'''cur=self.head_nodeif cur.data ==data:

self.head_node=cur.nextreturn

else:whilecur.next:#temp = cur

#cur = cur.next

temp,cur =cur,cur.nextif cur.data ==data:

temp.next=cur.nextdefpop(self,i):'''删除链表对象第i个节点并返回该节点内容

:param i: 要删除的节点,0 <= i < self.length

:return: 删除节点的内容'''length=self.get_len()

cur=self.head_nodeif i ==0:

Data=cur.data

self.head_node=cur.nextreturnDataelif i

temp, cur=cur, cur.next

Data=cur.data

temp.next=cur.nextreturnDatadefreset_data(self,i,data):'''修改第i个节点的内容

:param i: 要修改的节点,0 <= i < self.length

:param data: 修改后的内容

:return:'''cur=self.head_nodeif 0 <= i

cur=cur.next

cur.data=dataelse:returnFalsedefget_data(self,i):'''获取链表第i个的值

:param i: 0 <= i < self.length

:return: 节点的内容'''cur=self.head_nodeif 0 <= i

cur=cur.nextreturncur.dataelse:return False

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值