已知带头结点的单链表L={a1,a2,...an},试编写一个算法,将L中的元素进行逆置,即L ={an,an-1,...a1}
时间: 2024-02-09 10:09:10 浏览: 102
以下是基于Python语言的算法实现:
```python
def reverse_linked_list(head):
"""
将带头结点的单链表逆置
"""
if head is None or head.next is None:
return head
pre_node = None
cur_node = head.next
while cur_node is not None:
next_node = cur_node.next
cur_node.next = pre_node
pre_node = cur_node
cur_node = next_node
head.next = pre_node
return head
```
算法思路:
1. 首先判断链表是否为空或只有一个节点,如果是,则直接返回原链表头结点;
2. 初始化前驱节点 pre_node 为 None,当前节点 cur_node 为头结点的下一个节点(即第一个节点);
3. 遍历链表,将当前节点的下一个节点保存为 next_node;
4. 将当前节点的 next 指针指向前驱节点 pre_node;
5. 将前驱节点 pre_node 更新为当前节点 cur_node;
6. 将当前节点 cur_node 更新为下一个节点 next_node;
7. 遍历完成后,将头结点的 next 指针指向逆置后的链表头节点 pre_node;
8. 返回头结点。
这样就可以将链表逆置。
阅读全文