class Node:
def __init__(self,item):
self.item = item
self.next = None
class Link:
def __init__(self):
self._head = None
#从头插入一个节点
def add(self,item):
node = Node(item)
node.next = self._head
self._head = node
#遍历链表,打印链表的存的值
def travel(self):
cur = self._head
while cur: #这里不知道链表里有多少个节点,所以循环要用while,知道节点个数的话用FOR循环
print(cur.item)
cur = cur.next
def is_empty(self):
return self._head == None
def size(self):
cur = self._head
count = 0
while cur:
cur = cur.next
count += 1
print(count)
#向链表尾部添加元素
def append(self,item):
node = Node(item)
#特殊情况判断
if self._head is None:
self._head = node
return #直接返回 不执行下面的语句
pre = None #pre指向的是cur的前一个节点
cur = self._head
while cur is not None:
pre = cur
cur = cur.next
pre.next = node
#查看item是否存在
def serach(self,item):
cur = self._head
while cur:
if cur.item == item:
return True
cur = cur.next
return False
#在位置pos插入值item
def insert(self,pos,item):
node = Node(item)
pre = None
cur = self._head
if cur is None:
self.append(item)
return
for i in range (pos):
pre = cur
cur = cur.next
node.next = cur
pre.next = node
def remove(self,item):
pre = None
cur = self._head
while cur:
if cur.item == item:
pre.next = cur.next
return
pre = cur
cur = cur.next
link = Link()
# link.travel()
link.add(3)
link.add(4)
link.add(2)
link.append(5)
link.travel()
link.travel()
print(link.is_empty())
link.size()
print(link.serach(3))
link.travel()
link.remove(5)
link.travel()
单链表的 增,删,插入等操作的python实现ian
最新推荐文章于 2023-08-31 08:29:47 发布