class HeroNode(object):
“”
创建链表节点
“”
def init(self, no: int, name: str, ncname: str):
self.no = no
self.name = name
self.ncname = ncname
self.next = None
class SimpleLink(object):
“”"
链表
“”"
def init(self):
# 初始化头节点
self.head_node = HeroNode(0, “”, “”)
def is_empty(self) -> bool:
"""
判断链表是否为空
:return:
"""
return self.head_node.next is None
def designated_spot_add(func):
"""
装饰器,最后还是没用
:return:
"""
def verif(self, *args, **kwargs):
hero_node = args[0]
# 判断头节点是否为空
if self.is_empty():
print("链表为空")
# 创建临时指针
temp = self.head_node
# 循环链表找到最后一个节点
while True:
if temp.next is not None:
temp = temp.next
else:
break
# # 当退出循环后,就找了最后一个
temp.next = hero_node
hero_node.next = None
return func
pass
return verif
def add(self, hero_node):
"""
从头部依次添加
@param hero_node:
@return:
"""
# 判断头节点是否为空
if self.is_empty():
print("链表为空")
# 创建临时指针
temp = self.head_node
# 循环链表找到最后一个节点
while True:
if temp.next is not None:
temp = temp.next
else:
break
# 当退出循环后,就找了最后一个
temp.next = hero_node
hero_node.next = None
pass
def insert(self, hero_node):
"""
指定位置添加
:param hero_node:
:return:
"""
# 判断头节点是否为空
if self.is_empty():
print("链表为空")
flag = False
# 创建临时指针
temp = self.head_node
while True:
if temp.next is None:
break
elif hero_node.no < temp.next.no:
break
elif temp.next.no == hero_node.no:
flag = True
temp = temp.next
# 当退出循环,说明找到了位置
if flag:
print("%d位置已有" % temp.next.no)
else:
hero_node.next = temp.next
temp.next = hero_node
pass
def delete(self):
"""
删除节点 从尾部
"""
if self.is_empty():
print("链表为空")
return
else:
#
temp = self.head_node
while temp.next.next:
temp = temp.next
print(temp.no)
temp.next = None
def designated_spot_delete(self, no):
"""
指定位置删除
:param no:
:return:
"""
if self.is_empty():
print("链表为空")
temp = self.head_node
while True:
if temp.next is None:
break
elif temp.next.no == no:
temp.next = temp.next.next
break
temp = temp.next
def updata(self, no, name, chname):
"""
更新指定编号的信息
:param no: 编号
:param infor: 信息
:return:
"""
temp = self.head_node.next
while True:
if temp.next.no == no:
temp.next.name = name
temp.next.ncname = chname
break
else:
temp = temp.next
if temp.next is None:
break
def count(self):
"""
链表中有效数据个数
:return:
"""
if self.is_empty():
return None
else:
temp = self.head_node
i = 0
while temp.next:
i += 1
temp = temp.next
print("链表有%d个数据" % i)
return i
def show(self):
"""
遍历链表
"""
if self.is_empty():
print("链表为空")
temp = self.head_node
while True:
if temp.next is not None:
print(temp.next.no, temp.next.name, temp.next.ncname)
temp = temp.next
else:
break
def main():
simpleLink = SimpleLink()
h = HeroNode(1, “林冲”, “豹子头”)
simpleLink.add(HeroNode(1, “林冲”, “豹子头”)
simpleLink.delete()
simpleLink.delete()
simpleLink.show()
print(“=================”)
# simpleLink.updata(3, “ghy”, “dream”)
simpleLink.count()
if name == ‘main’:
main()