以单链表为例,设计一个主程序完成如下功能: 1)初始化单链表L 2)对L依次插入元素5,34,2,16,22,100 3)依次输出L中的元素 4)求出L中值最大和值最小的元素 5)删除L中第2个结点 6) 第一加上学号 姓名,如“120223行05601 张三”
时间: 2024-10-11 14:17:18 浏览: 37
在Python中,我们可以使用`ListNode`类来表示单链表节点,并实现上述功能。这里是一个简单的示例:
```python
class ListNode:
def __init__(self, value=0):
self.val = value
self.next = None
def initialize_list():
L = ListNode() # 初始化空链表
current = L
for i in range(1, 7): # 插入元素
new_node = ListNode(i * 10 + (i-1)*10)
current.next = new_node
current = current.next
return L
def print_list(L):
current = L
while current is not None:
print(current.val)
current = current.next
def find_min_max(L):
current = L
min_val = max_val = current.val
while current is not None:
if current.val < min_val:
min_val = current.val
elif current.val > max_val:
max_val = current.val
current = current.next
return min_val, max_val
def delete_node_at_index(L, index):
if index == 0 or L is None:
return L
if index == 1: # 删除第二个节点
L.next = L.next.next
else:
current = L
for _ in range(index - 1):
current = current.next
current.next = current.next.next
def add_student_info(node, student_id, name):
node.val += f" {student_id} {name}"
return node
# 主程序
if __name__ == "__main__":
L = initialize_list()
print("初始链表:")
print_list(L)
# 插入并输出元素
insert_and_print(L, [5, 34, 2, 16, 22, 100])
# 求最小值和最大值
min_value, max_value = find_min_max(L)
print(f"最小值: {min_value}, 最大值: {max_value}")
# 删除第2个节点
L = delete_node_at_index(L, 2)
print("删除第2个节点后的链表:")
print_list(L)
# 添加学号姓名信息
head = add_student_info(L, "120223", "张三")
print("添加学号姓名后的链表:")
print_list(head)
```
这个例子展示了如何创建、操作和打印单链表。注意,实际运行时需要处理边界条件和其他可能异常。
阅读全文