python遍历链表_Python实现单向循环链表

insert方法,在中部插入时候与单向链表一样,头部和尾部插入的方法已经写了add和append,不必再重写,继续写search和delete方法,代码如下;

def insert(self,i,item):

if i<=0:

self.add(item)

elif i>=self.length():

self.append(item)

else:

node = Node(item)

cur = self.__head

index = 0

while index < i-1:

index = index +1

cur = cur.next

node.next = cur.next

cur.next = node

def search(self,item):

if self.isEmpty():

return False

cur = self.__head

if cur.item == item:

return True

while cur.next is not self.__head:

cur = cur.next

if cur.item == item:

return True

return False

def delete(self,item):

cur = self.__head

pre = None

while cur.next is not self.__head:

if cur.item == item:

if pre is None:

temp = self.__head

while temp.next is not self.__head:

temp = temp.next

self.__head = cur.next

temp.next = self.__head

else:

pre.next = cur.next

pre = cur

cur = cur.next

if cur.item == item:

if pre is None:

self.__head = None

else:

pre.next = self.__head

这里的delete方法比较复杂,要注意删除的是头节点尾节点的情况

main方法:

if __name__ == '__main__':

sll = SingleCirlceLinkedList()

print (sll.length())

sll.add(8)

sll.add(9)

sll.append(10)

print (sll.search(8))

sll.delete(9)

sll.walk()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值