创建一个含有n个节点的链表(不包含头结点),n由键盘输入,按照顺序存分别储数字1到n,使用递归的方法倒叙输出。
时间: 2024-10-11 10:15:37 浏览: 37
创建一个含有n个节点的链表并按顺序存储数字1到n,可以分为两步:首先构造链表,然后使用递归来实现倒序输出。
**步骤一:构造链表**
1. 定义一个Node类,包含整数值data和指向下一个节点的指针next。
2. 编写一个函数`createList(n)`,该函数接收一个整数n作为参数:
- 如果n等于0,返回None表示链表结束。
- 否则,创建一个新的Node,将当前数字n赋给它,并将其设置为当前列表的最后一个节点(即上一个节点.next)。
- 调用自身`createList(n-1)`来继续构建剩余的链表。
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
def create_list(n):
if n == 0:
return None
else:
last_node = create_list(n-1)
new_node = Node(n)
new_node.next = last_node
return new_node
```
**步骤二:递归倒序输出**
1. 写一个名为`reverse_output(head)`的递归函数,接受链表的头节点作为参数:
- 如果链表为空,直接返回。
- 否则,先递归调用`reverse_output(head.next)`处理剩下的部分。
- 然后输出当前节点的数据(也就是倒序后的第一个元素)。
- 最后返回头部节点(此时已经变为原来的尾部)。
```python
def reverse_output(head):
if head is None:
return
last_node = reverse_output(head.next)
print(last_node.data, end=" ") # 输出数据
return head
```
**整合代码示例:**
```python
# 获取用户输入的n值
n = int(input("请输入链表长度:"))
# 构建链表
head = create_list(n)
# 倒叙输出
print("\n倒叙输出结果:")
reverse_output(head)
```
阅读全文