输入一个正整数序列,遇负数时停止,建立一个线性链表存储读入的数据,将各个元素按逆序输出
时间: 2024-09-30 09:11:21 浏览: 45
当你输入一个正整数序列,遇到负数时操作会终止。在这种情况下,你可以通过创建一个单向链表数据结构来存储这些正整数。链表的每个节点包含一个整数值和指向下一个节点的指针。以下是实现这个功能的一般步骤:
1. 创建一个链表节点类,其中包含两个属性:值(value)和指向下一个节点的引用(next)。
```python
class ListNode:
def __init__(self, value=0):
self.value = value
self.next = None
```
2. 创建一个函数来添加新节点并处理输入流:
```python
def add_to_list(n):
if n < 0:
return None
else:
new_node = ListNode(n)
if not current_node: # 链表为空,设置头节点
head = new_node
else:
current_node.next = new_node
current_node = new_node # 更新当前节点
return head
```
3. 初始化一个空链表和一个指向头节点的指针(current_node):
```python
head = None
current_node = None
```
4. 遍历输入流,调用 `add_to_list` 函数,并在遍历结束后反转链表输出:
```python
input_sequence = [int(i) for i in input() if i > 0] # 获取用户输入并过滤负数
reversed_list = reverse_linked_list(head) # 反转链表
# 输出逆序的链表元素
while reversed_list:
print(reversed_list.value)
reversed_list = reversed_list.next
```
5. 写一个辅助函数 `reverse_linked_list` 来反转链表:
```python
def reverse_linked_list(node):
prev = None
curr = node
while curr:
next_temp = curr.next
curr.next = prev
prev = curr
curr = next_temp
return prev
```
阅读全文