Python单链表的基本操作
Posted 多测师_孟sir
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python单链表的基本操作相关的知识,希望对你有一定的参考价值。
"""
初始化链表
"""
import time
class Node:
def __init__(self,value):
self.value = value
self.next = None
class SingleLinkList:
def __init__(self):
self.head = None
def is_empty(self):
"""判断是否为空"""
return self.head == None
def travel(self):
"""遍历链表"""
cur = self.head
while cur is not None:
print(cur.value,end=" ")
cur = cur.next
def append(self,item):
"""在末尾添加节点"""
node = Node(item)
# 如果是空链表
if self.is_empty():
self.head = node
return
# 当不为空的时候
cur = self.head
while cur.next:
cur = cur.next
cur.next = node
# node.next = None
def insert(self,index,item):
"""插入中间节点"""
if (self.head is None) and (self.head.next is None):
return
cur = self.head
while cur is not None and index > 1:
index = index - 1
cur = cur.next
node = Node(item)
node.next = cur.next
cur.next = node
def add(self,item):
"""在头部添加节点"""
node = Node(item)
node.next = self.head
self.head = node
def length(self):
"""获取链表的长度"""
cur = self.head
count = 0
while cur is not None:
count += 1
cur = cur.next
return count
def search(self,item):
# 查看item在链表中是否存在
cur = self.head
while cur != None:
if cur.value == item:
return True
else:
cur = cur.next
return False
def pop_last(self):
"""弹出链表的最后一个元素"""
if self.head is None:
return
cur = self.head
if cur.next is None:
self.head = None
return
while cur.next.next is not None:
cur = cur.next
cur.next = None
def pop_head(self):
"""把链表的第一个元素弹出"""
if self.head is None:
return
self.head = self.head.next
def cycle(self):
"""循环输出链表"""
cur = self.head
if cur.next == None:
cur.next = self.head
while cur.next != None:
self.travel()
time.sleep(3)
if __name__ == ‘__main__‘:
s = SingleLinkList()
s.append(100)
s.append(300)
s.append(600)
s.add(500)
s.add(150)
head = Node(30)
head.next = Node(40)
head.next.next = Node(50)
s.pop_head()
s.pop_last()
s.cycle()
s.travel()
以上是关于Python单链表的基本操作的主要内容,如果未能解决你的问题,请参考以下文章