1.问题描述 单链表初始为空,给定插入位置和数据,插入结点实现单链表的创建。假设单链表中的结点计数从1开始。 2.算法 单链表结点的存储结构包含两部分:数据、下一结点指针 单链表的查找:给出位置i,若第i个结点存在(1<=i<=表中结点数L),返回结点地址;否则,返回NULL。 单链表的插入:给出位置i和数据e,在单链表第i(1<=i<=L+1)个结点位置插入新结点,数据为e。 输入 测试次数n 每行一组测试数据,格式如下: 位置i 数据e 输出 对每组测试数据,调用插入函数在位置i插入数据e,若插入成功,输出当前链表中的数据;若插入不成功,输出error。
时间: 2023-06-25 21:01:43 浏览: 108
算法实现如下:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def find_node(head: ListNode, i: int) -> ListNode:
"""
查找第i个结点,返回结点地址
"""
if i < 1:
return None
node = head
for _ in range(i-1):
if node:
node = node.next
else:
return None
return node
def insert_node(head: ListNode, i: int, e: int) -> ListNode:
"""
在第i个结点位置插入新结点,数据为e
"""
node = find_node(head, i)
if not node and i != 1:
print("error")
return head
new_node = ListNode(e)
if i == 1:
new_node.next = head
return new_node
new_node.next = node.next
node.next = new_node
return head
# 测试
n = int(input()) # 测试数据组数
for i in range(n):
inputs = input().split()
i, e = int(inputs[0]), int(inputs[1])
head = insert_node(head, i, e)
while head:
print(head.val, end=" ")
head = head.next
print()
```
其中,ListNode 类表示单链表中的结点,包含两部分:数据和下一结点指针。find_node 函数用于查找第 i 个结点,insert_node 函数用于在第 i 个结点位置插入新结点。最后,按照题目要求输出当前链表中的数据。
阅读全文