【问题描述】编写程序,将线性表元素序列逆置。要求线性表采用单链表存储结构,元素为int型。从键盘输入线性表元素,创建单链表,输入0结束,对线性表序列进行逆置,输出逆置前和逆置后的序列。 【输入形式】线性表元素序列,以0结束 【输出形式】逆置前和逆置后的线性表序列 【样例输入】
时间: 2024-10-09 18:01:40 浏览: 38
为了编写这个程序,我们需要使用一个单链表数据结构,并实现一个插入节点、遍历链表以及反转链表的功能。以下是Python的一个简单示例,假设我们有一个`Node`类表示链表节点:
```python
class Node:
def __init__(self, value=0):
self.value = value
self.next = None
def insert_to_list(lst, value):
new_node = Node(value)
if lst is None:
lst = new_node
else:
current = lst
while current.next is not None:
current = current.next
current.next = new_node
return lst
def print_linked_list(lst):
current = lst
while current is not None:
print(current.value, end=" -> ")
current = current.next
print("None")
def reverse_linked_list(lst):
prev = None
current = lst
while current is not None:
next_temp = current.next
current.next = prev
prev = current
current = next_temp
return prev
# 示例输入
input_str = input("请输入线性表元素(以0结束),例如:1 2 3 4 5 0:")
elements = list(map(int, input_str.split()))
# 创建单链表
head = None
for element in elements:
head = insert_to_list(head, element)
print("-- 逆置前的线性表序列 --")
print_linked_list(head)
# 反转链表
reversed_head = reverse_linked_list(head)
print("\n-- 逆置后的线性表序列 --")
print_linked_list(reversed_head)
```
在这个程序中,首先通过用户输入获取元素并创建单链表,然后调用`reverse_linked_list`函数反转链表,最后分别打印原链表和反转后的链表。
阅读全文