设计一个算法,将带头的单链表逆置
时间: 2024-09-30 14:13:27 浏览: 33
单链表逆置
设计一个算法来逆置带头的单链表,可以采用迭代或递归的方式。这里我们提供一种迭代的方法,它更直观且空间复杂度较低。
**迭代法(非递归):**
1. 定义两个指针,`prev` 和 `curr`,初始都指向头节点 `head`。
2. 创建一个临时变量 `nextNode`,用于保存当前节点的下一个节点。
3. 进入循环,当 `curr` 不为空时,执行以下步骤:
- 将 `curr` 的下一个节点赋值给 `nextNode`。
- 更新 `curr` 指向 `prev`。
- 更新 `prev` 指向 `curr`(即原 `curr.next`)。
4. 循环结束后,`prev` 就是指向了新的头节点,因为原来的头节点现在变成了最后一个节点。所以返回 `prev` 作为新链表的头。
下面是伪代码形式:
```plaintext
def reverseList(head):
prev = None
curr = head
while curr is not None:
nextNode = curr.next
curr.next = prev
prev = curr
curr = nextNode
return prev
```
阅读全文