编写一个算法(函数),把一个带头结点的单链表的倒置。
时间: 2024-04-29 22:22:15 浏览: 91
下面是一个带头结点的单链表倒置的算法实现:
```pythondef reverse_linked_list(head):
if head is None or head.next is None:
return head
pre = None
cur = head
while cur is not None:
nxt = cur.next
cur.next = pre
pre = cur
cur = nxt
head.next = pre
return head
```
具体思路是,从链表的第一个节点开始遍历,把每个节点的 next 指针指向它的前一个节点,直到遍历到链表的最后一个节点。最后把头结点的 next 指针指向原链表的最后一个节点(即反转后的头节点),然后返回头结点。
例如,对于以下带头结点的单链表:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
head = ListNode()
node1 = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
head.next = node1
node1.next = node2
node2.next = node3
```
执行 `reverse_linked_list(head)` 后,链表变为:
```
head -> 3 -> 2 -> 1 -> None
```
阅读全文