请编写算法将单链表中元素的次序完全颠倒
时间: 2024-09-15 21:12:31 浏览: 45
数据结构与算法实验(C++):单链表实验-代码
当然,我们可以使用迭代或者递归的方式来反转一个单链表。这里是一个简单的迭代方法:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverseList(head):
prev = None
current = head
while current is not None:
# 保存当前节点的下一个节点
next_node = current.next
# 将当前节点的next指向前一个节点
current.next = prev
# 更新前一个节点和当前节点
prev = current
current = next_node
return prev # 返回新的头节点,原头现在是最后一个节点
# 示例:
# 输入:1 -> 2 -> 3 -> 4 -> 5
# 输出:5 -> 4 -> 3 -> 2 -> 1
```
这个算法的基本思想就是通过三个指针,分别表示上一个节点、当前节点和下一个节点,在每次循环中都将当前节点的`next`指向前一个节点,直到遍历完整个链表。
阅读全文