本关任务:编写一个能将链表使用递归方法倒叙输出的小程序。
时间: 2024-11-09 11:17:45 浏览: 8
C++使用递归来顺序和逆序输出链表的全部元素
5星 · 资源好评率100%
递归是一种在函数内部调用自己的编程技术,在链表倒序输出的问题中,可以采用递归来遍历链表并调整节点顺序。以下是一个简单的Python示例,用于演示如何使用递归实现链表的倒序:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverse_list_recursively(head):
# 递归基本情况:当链表为空或只有一个元素时,返回头节点
if not head or not head.next:
return head
# 递归调用,处理剩余部分
reversed_tail = reverse_list_recursively(head.next)
# 将当前节点接到反转后的链表头部
head.next.next = head
head.next = None # 更新头节点的next指向None,完成倒序
return reversed_tail # 返回新的头节点,即原链表的尾节点
# 示例链表创建
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
# 使用递归方法倒序链表
reversed_head = reverse_list_recursively(head)
while reversed_head:
print(reversed_head.val, end=" -> ")
reversed_head = reversed_head.next
# 输出:3 -> 2 -> 1 ->
```
这个函数首先检查链表是否为空或只有一个节点,如果是,则直接返回。然后它递归地处理剩余的部分,并在最后一步将当前节点连接到已反转的链表尾部。每递归一层,链表就向前推进一步。
阅读全文