题目:
输入一个链表,反转链表后,输出新链表的表头。
解题思路:
题目不难,但关键是要理清思路,否则很容易在很多小地方出错。
这道题目我们的总体思路就是正向读链表,逆向插链表。我们需要三个变量:
1)首先,我们将当前节点的下一个节点存储起来。(q)
2)设置一个为空的头节点(mHead)来存储逆序的链表,让当前节点(pHead)的next指向头节点,然后当前节点成为头节点。
3)让下一个节点成为当前节点。通过前面存储的结点q,就可找到当前节点的下一个节点。
重复上述过程,直到当前节点为空。
代码:
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
if(pHead == NULL ){
return NULL;
}
ListNode* mHead = NULL; //逆序的头指针
ListNode* q = NULL; //存储正序下一个结点
while(pHead!=NULL){ //pHead表示当前结点
q = pHead->next;
pHead->next = mHead;
mHead = pHead;
pHead = q;
}
return mHead;
}
};
继续阅读与本文标签相同的文章
-
请求支援!我被“非结构化数据包围了” | 开发者必读(060期)
2026-05-18栏目: 教程
-
研发效能提升 36 计第一课:互联网时代研发效能的挑战和应对之道
2026-05-18栏目: 教程
-
Service Mesh 发展趋势:云原生中流砥柱
2026-05-18栏目: 教程
-
深入理解 Java 中 SPI 机制
2026-05-18栏目: 教程
-
阿里云“网红"运维工程师白金:做一个平凡的圆梦人
2026-05-18栏目: 教程
