设计一个算法,将带头的单链表逆置的代码
时间: 2024-10-06 16:02:19 浏览: 40
单链表逆置
设计一个算法反转单链表的代码通常涉及创建一个新的头节点和两个指针,一个是原来的头节点,另一个是新的头节点。以下是使用Python语言的一个简单示例:
```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_temp = current.next # 保存当前节点的下一个节点
current.next = prev # 将当前节点指向prev
prev = current # 更新prev指向前一个节点
current = next_temp # 移动current到下一个节点
return prev # 返回新链表的头节点
# 示例
# 假设我们有链表 1 -> 2 -> 3 -> 4 -> 5
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
head.next.next.next = ListNode(4)
head.next.next.next.next = ListNode(5)
reversed_head = reverseList(head)
```
这个算法的时间复杂度是O(n),因为需要遍历整个链表一次。空间复杂度是O(1),因为它只用了几个额外的变量,并未增加数据结构。
阅读全文