假设L是一个带头结点的单链表,设计递归算法使单链表L逆置。给出代码
时间: 2024-05-02 16:23:11 浏览: 119
单链表的逆置 代码
以下是递归算法实现单链表逆置的代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverseList(head: ListNode) -> ListNode:
if not head or not head.next:
return head
new_head = reverseList(head.next)
head.next.next = head
head.next = None
return new_head
```
这里使用了递归的思想,将单链表的逆置转化为递归求解子问题——将头结点之后的链表逆置。当链表为空或只有一个节点时,直接返回原链表;否则,递归求解子问题,得到新的头结点,并将原头结点加入到新头结点的末尾,最后返回新的头结点。
阅读全文