题目描述
分析
思路:把当前节点作为已经翻转结果的新表头节点
C代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head) {
struct ListNode* result = NULL;
struct ListNode* tmp;
while(head){
tmp = head->next; //先保存下一个结点的地址,然后才可以开始修改head结点
head->next = result; //将当前结点head,连接到已经反转过的链表中,result保存的是已经反转后的链表的头指针
result = head; //移动result指向head
head = tmp; //将之前保存的下一个结点置当前待连接到链表的结点
}
return result;
}
C++代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* result = NULL;
ListNode* tmp = NULL;
while(head){
tmp = head->next;
head->next = result;
result = head;
head = tmp;
}
return result;
}
};

本文详细介绍了如何使用C语言和C++实现链表的反转操作,包括代码实现和核心思路解析。
432

被折叠的 条评论
为什么被折叠?



