想要写个菜单选择库函数,再输入需要更改的字符,但是陷入循环了,有什么建议或者解决方法吗?
代码:
class Node:
#链表节点初始化
def __init__(self, item):
self.item = item
self._next = None
class LinkList:
#链表及其相关操作
def __init__(self):
self._head = None
def is_empty(self):
#判断是否为空链表,头节点为None则是空
return self._head is None
def length(self):
#求链表的长度
p = self._head
count = 0
while p:
count += 1
p = p._next
return count
def append(self, item):
#向链表尾部添加元素, 考虑是否是空链表
node = Node(item)
p = self._head
if not p:
self._head = node
else:
while p._next:
p = p._next
p._next = node
def add(self, item):
#向链表头部插入元素
node = Node(item)
node._next = self._head
self._head = node
def insert(self, position, item):
#向链表中插入元素
# 头插 or 尾插 or 中间插入
if position <= 0:
self.add(item)
elif position >= self.length():
self.append(item)
else:
pre = self._head
count = 0
while count < position - 1:
count += 1
pre = pre._next
node = Node(item)
node._next = pre._next
pre._next = node
def get_item(self, position):
#获取某位置的元素
if position < 0 or position >= self.length():
return None
p = self._head
count = 0
while count != position:
p = p._next
count += 1
return p.item
def exixt_value(self, item):
#某个值是否存在
p = self._head
while p:
if p.item == item:
return True
else:
p = p._next
return False
def remove(self, item):
#删除元素
p = self._head
pre = None
while p:
if p.item == item:
# 是否头节点
if not pre:
self._head = p._next
else:
pre._next = p._next
break
else:
pre = p
p = p._next
def clear(self):
#删除链表
self._head = None
def travel(self):
#列表遍历
p = self._head
while p:
print(p.item, end=" ")
p = p._next
print()
def use(self):
while True:
self.show_menu()
res=int(input("请输入数字1-4:"))
if res ==1:
print("请输入一个数:")
self.append(int(input()))
elif res==2:
print("请输入一个数:")
self.add(int(input()))
elif res==3:
print("请输入一个数:")
self.exixt_value(int(input()))
elif res==4:
print("请输入一个数:")
self.remove(int(input()))
def show_menu(int):
print("请选择如下序号:")
print("1.尾插法增加")
print("2.头插法增加")
print("3.查询值是否存在")
print("4.删除元素")
if __name__ == '__main__':
linklist = LinkList()
linklist.append(1)
linklist.append(2)
linklist.append(3)
linklist.append(4)
print(linklist.length()) # 4
linklist.travel() # 1 2 3 4
linklist.add(5)
linklist.add(6)
linklist.travel() # 6 5 1 2 3 4
linklist.insert(2, 7)
linklist.insert(2, 8)
linklist.travel() # 6 5 8 7 1 2 3 4
print(linklist.get_item(2), linklist.get_item(12), linklist.get_item(4)) # 8 None 1
print(linklist.exixt_value(6), linklist.exixt_value(20)) # True False
linklist.remove(9)
linklist.remove(5)
linklist.travel() # 6 8 7 1 2 3 4
linklist.use()
linklist.clear()
linklist.travel() # 空