📅  最后修改于: 2023-12-03 15:27:10.723000             🧑  作者: Mango
如果我们有一个单链表,并且需要在从末尾开始的第 N 个节点之后插入一个节点,那么我们可以使用以下Python程序来完成此任务。
该Python程序主要使用了链表的概念和节点操作。链表是由一个个节点组成的数据结构,每个节点包含数据存储和指向下一个节点的指针。通过对节点的操作,我们可以对链表进行各种操作,比如插入、删除、查找等。
这个程序的主要思路是:
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def append(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
return
curr_node = self.head
while curr_node.next:
curr_node = curr_node.next
curr_node.next = new_node
def insert_after(self, n, data):
new_node = Node(data)
curr_node = self.head
count = 1
while curr_node:
if count == n:
temp_node = curr_node.next
curr_node.next = new_node
new_node.next = temp_node
return
curr_node = curr_node.next
count += 1
raise ValueError("Node not found in the list")
def main():
linked_list = LinkedList()
linked_list.append(1)
linked_list.append(2)
linked_list.append(3)
linked_list.insert_after(2, 4)
curr_node = linked_list.head
while curr_node:
print(curr_node.data)
curr_node = curr_node.next
if __name__ == '__main__':
main()
首先,我们定义了一个Node类,它有一个data属性和一个next指针,指向下一个节点。接着,我们定义了一个LinkedList类,包含一个head指针,指向链表的头部节点。
我们使用append方法将元素添加到链表的末尾。接下来,我们定义了一个insert_after方法,它用于在从末尾开始的第N个节点之后插入一个节点。该方法需要两个参数,一个是要插入的节点的位置N,另一个是要插入的数据。
我们首先创建一个新节点,并设置它的数据为要插入的数据。然后,我们使用curr_node变量遍历链表,计算当前节点的位置。如果当前节点是要插入节点的前一个节点(即当前节点是第N个节点),那么我们将新节点插入到当前节点之后,并更新新节点的next指针,使其指向后面的节点。
最后,我们在while循环中遍历链表,并打印出每个节点的数据。
该Python程序可以有效地在从末尾开始的第N个节点之后插入一个新节点。它演示了链表的基本概念和节点操作,并提供了一个简单而有效的解决方案。