有一个带头结点的单链表L,设计一个算法将L逆置,即最后一个结点变成第一个结点,原来倒数第二个结点变成第二个结点,如此等等。
时间: 2024-09-29 07:04:42 浏览: 41
给定一个不带头结点的单链表,写出将链表倒置的算法
5星 · 资源好评率100%
要逆置一个带头结点的单链表,可以采用迭代或递归的方法。这里提供一种迭代的方法:
1. 定义三个指针:prev、current和next。初始时,prev指向头结点,current也指向头结点,而next为空。
2. 当current不为null时,执行以下步骤:
a. 将current的下一个节点赋值给next。
b. 将current的next指针更新为prev,完成一次反转操作。
c. 更新prev和current,让它们分别移动到当前节点和next节点的位置。
d. current = next; (继续处理下一个节点)
3. 执行完上述循环后,current会变为null,此时prev就是新的头结点,链表已经被成功逆置。
```python
def reverseList(head):
prev = None
current = head
while current is not None:
next_temp = current.next
current.next = prev
prev = current
current = next_temp
return prev # 返回新的头结点
```
阅读全文