Python实现链表的插入,增加,查找,删除,查看长度和打印的方法。
下面展示一些 内联代码片。
# time 2021-11-24 15点16分
# neil_linch
class Node(object):
def __init__(self, data, next=None):
self.data = data
self.next = next
def __str__(self):
return ('当前节点值为:%s' % self.data)
class LinkedList(object):
def __init__(self, head=None):
self.head = head
def __len__(self):
curr_node = self.head
counter = 0
while curr_node is not None:
counter += 1
curr_node = curr_node.next
return counter
# 在链表前面插入节点
def insert_to_front(self, data):
if data is None:
return None
# 原来的头结点 , 是新头节点的next
node = Node(data, self.head)
self.head = node
return node
# 从链表后面插入节点
def append(self, data):
if data is None:
return None
node = Node(data)
if self.head is None:
self.head = node
return node
# 从头节点开始寻找当前链表尾指针
curr_node = self.head
while curr_node.next is not None:
curr_node = curr_node.next
# 链表尾指针指向新插入的node
curr_node.next = node
return node
def find(self, data):
if data is None:
return None
curr_node = self.head
while curr_node is not None:
if curr_node.data == data:
return curr_node
curr_node = curr_node.next
return None
def delete(self, data):
if data is None:
return None
if self.head is None:
return
# 当要删除的元素是头节点时
if self.head.data == data:
self.head = self.head.next
prev_node = self.head
curr_node = self.head.next
while curr_node is not None:
if curr_node.data == data:
prev_node.next = curr_node.next
return
prev_node = curr_node
curr_node = curr_node.next
return None
def print_list(self):
if self.head is None:
return
curr_node = self.head
while curr_node is not None:
print(curr_node.data)
curr_node = curr_node.next
def get_all_data(self):
if self.head is None:
return
curr_node = self.head
data = []
while curr_node is not None:
data.append(curr_node.data)
curr_node = curr_node.next
return data
go = LinkedList()
while True:
num = int(input('请输入1-6:'))
if num == 1:
data = input('请输入要插入的data:')
go.insert_to_front(data)
elif num == 2:
data = input('请输入要添加的data:')
go.append(data)
elif num == 3:
data = input('请输入要查找的data:')
go.find(data)
elif num == 4:
data = input('请输入要删除的data:')
go.delete(data)
elif num == 5:
print('查看长度')
go.print_list()
elif num == 6:
print('打印')
go.get_all_data()
elif num == 0:
break
else:
print('请输入正确的命令符')
https://www.lanqiao.cn/courses/1512/learning/?id=16644
版权声明:本文为jialingbb原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。