反转链表
题目描述:
输入一个链表,反转链表后,输出新链表的表头。
示例1
输入:
{1,2,3}
返回值:
{3,2,1}
**分析:**
解释
链表:一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的),包括数据域和指针域,数据域存数据,指针域指示其后继节点的地址信息。
链表的分类:单链表、双链表、循环链表
题目要求输入一个链表(这里我们就默认是单链表了),对其进行反转后输出新链表的表头
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
if(pHead == NULL || pHead->next == NULL){
//如果当前链表为空,或者下个节点为空,就返回当前节点即可
return pHead;
}
ListNode *l1 = pHead;
ListNode *l2 = l1->next;
l1->next = NULL;
ListNode *l3 = l2->next;
while(l2 != NULL){
l2->next = l1;
l1=l2;
l2=l3;
if(l3 != NULL){
l3 = l3->next;
}
}
return l1;
}
};
京公网安备 11010502036488号