函数的功能是将不带头结点的单链表进行反转,并返回反转后的单链表的头指针。写出代码并对重要步骤进行解释。
时间: 2024-10-23 16:13:01 浏览: 23
在Python中,我们可以使用迭代的方式来实现单链表的反转。以下是关键步骤的代码:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverseList(head):
# 初始化三个指针:prev为None,current指向当前节点,next指向下一个节点
prev = None
current = head
# 遍历整个链表
while current is not None:
# 将当前节点的下一个节点保存到temp变量中
next_node = current.next
# 更新当前节点的下一个指针为prev
current.next = prev
# 移动prev和current向前一步
prev = current
current = next_node
# 返回反转后的头节点,即原链表的尾节点
return prev
```
重要步骤解析:
1. **初始化指针**:创建两个指针`prev`和`current`,并将`current`设置为链表的头节点。
2. **遍历链表**:在一个循环中,首先将`current`的下一个节点赋值给`next_node`,防止丢失原链表的连接。
3. **反转链接**:修改`current`的`next`指针,使其指向前一个节点`prev`,实现了链表元素的逆序。
4. **移动指针**:每次迭代后,将`prev`和`current`向后移动一位,直到`current`变为`None`,此时`prev`就是新链表的头节点。
5. **结束并返回**:当循环结束后,返回`prev`作为新的链表头节点。
阅读全文