给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
时间: 2024-03-19 19:39:25 浏览: 80
要反转一个单链表,可以使用迭代或递归的方法。
1. 迭代方法:
- 初始化三个指针:prev、curr 和 next,分别指向前一个节点、当前节点和下一个节点。
- 遍历链表,每次将当前节点的 next 指针指向前一个节点、 和 next 指针。
- 当遍历整个链表后,将链表的头节点指向 prev,即为反转后的链表。
以下是迭代方法的示例代码:
```python
def reverseList(head): prev = None
curr = head
while curr:
next = curr.next
curr.next = prev
prev = curr
curr = next
return prev
```
2. 递归方法:
- 递归地反转链表的子链表。
- 将当前节点的下一个节点的 next 指针指向当前节点,然后将当前节点的 next 指针置空。
- 返回反转后的链表的头节点。
以下是递归方法的示例代码:
```python
def reverseList(head):
if not head or not head.next:
return head
new_head = reverseList(head.next)
head.next.next = head
head.next = None
return new_head
```
相关问题
C语给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
好的,这是一道数据结构问题,我可以给你提供解答。以下是 C++ 代码实现:
```c++
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* pre = nullptr;
ListNode* cur = head;
while (cur) {
ListNode* next = cur->next;
cur->next = pre;
pre = cur;
cur = next;
}
return pre;
}
};
```
这个方法会将原链表的每个节点指向其前一个节点,来实现整个链表的翻转。希望可以帮到你!
用c语言给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
在C语言中,你可以使用迭代或递归的方式来反转单链表。这里是一个典型的迭代方法:
```c
struct ListNode* reverseList(struct ListNode* head) {
struct ListNode *prev = NULL, *current = head, *next = NULL;
// 当链表非空时,循环遍历
while (current != NULL) {
next = current->next; // 保存当前节点的下一个节点
current->next = prev; // 将当前节点指向 prev,完成反转
prev = current; // 更新 prev 为当前节点
current = next; // 移动到下个节点
}
return prev; // 返回新的头节点,即原链表的尾节点
}
```
这个函数接受链表的头节点作为输入,然后逐步改变节点的指针,使得它们从原来的顺序变成逆序。最后返回`prev`,它就是新链表的头节点。
阅读全文