编写主函数测试单链表的各种基木运算: (1) 生成一个至少包含有5个元素的单链表,元素值由计算机输入(2) 在表中的第5个位置上插入元素~7” (3) 删除表中的第6个元素 (4) 显示(1) (3)每一步的操作结果
时间: 2024-10-09 14:02:23 浏览: 22
单链表的各种基本运算的算法.zip
为了编写主函数测试单链表的这些基本操作,首先你需要定义一个单链表节点的数据结构,并实现相应的插入、删除和打印功能。这里是一个简化的Python示例,假设我们已经有了`ListNode`类,代表单链表节点,以及`insert_at`, `delete_at`, 和 `print_list`等辅助函数:
```python
class ListNode:
def __init__(self, value=0, next=None):
self.value = value
self.next = next
def input_elements(n):
elements = []
for _ in range(n):
element = int(input(f"请输入第{n-i}个元素:"))
elements.append(element)
return elements
def create_linked_list(elements):
head = None
current = None
for i, e in enumerate(elements):
if not head:
head = ListNode(e)
current = head
else:
new_node = ListNode(e)
current.next = new_node
current = current.next
return head
def insert_at(head, index, value):
# 在指定位置插入新节点
if index < 0 or index > len(elements):
print("无效的插入位置")
return head
new_node = ListNode(value)
curr = head
for _ in range(index):
curr = curr.next
new_node.next = curr.next
curr.next = new_node
return head
def delete_at(head, index):
# 删除指定位置的节点
if index < 0 or index >= len(elements):
print("无法删除不存在的节点")
return head
if index == 0:
head = head.next
else:
curr = head
for _ in range(index - 1):
curr = curr.next
curr.next = curr.next.next
return head
def print_list(head):
elements = []
while head:
elements.append(head.value)
head = head.next
print("当前链表:", elements)
# 主程序
if __name__ == "__main__":
n = int(input("请输入链表元素个数: "))
elements = input_elements(n)
head = create_linked_list(elements)
# 操作步骤1
print("\n原始链表:")
print_list(head)
index_to_insert = int(input("在哪个位置插入元素7? "))
head = insert_at(head, index_to_insert, 7)
print("\n插入元素7后的链表:")
print_list(head)
# 操作步骤3
index_to_delete = int(input("删除第几个元素? "))
head = delete_at(head, index_to_delete)
print("\ndelete_at操作后的链表:")
print_list(head)
```
这个程序会提示用户输入链表的元素个数和每个操作的位置,然后分别展示原始链表、插入元素后的链表以及删除元素后的链表状态。注意这只是一个简化版本,实际项目中还需要考虑错误处理和边界情况。
阅读全文