设计算法将带头结点的单链表就地逆置
时间: 2024-10-08 17:04:46 浏览: 38
在计算机科学中,将带头结点的单链表就地逆置(In-place Reverse Linked List)是指不额外分配空间,直接通过修改原链表节点指针来达到链表逆序的效果。这里是一个常见的递归算法解决方案:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverseList(head):
if not head or not head.next: # 如果链表为空或者只有一个节点,无需反转,直接返回
return head
# 将当前节点的next指向前一个节点
prev = None
curr = head
while curr:
next_temp = curr.next # 先保存下一个节点
curr.next = prev # 当前节点指向prev
prev = curr # 预备移动到下一个位置
curr = next_temp # 移动到下一个节点
return prev # 返回新的头节点
```
在这个算法中,我们遍历链表的同时,每次都将当前节点的`next`指向前一个节点,直到遍历完整个链表。最后,返回`prev`作为新的头节点,因为链表的最后一个节点在反转过程中变成了新的头。
阅读全文