反转链表
题目描述:
输入一个链表,反转链表后,输出新链表的表头。
示例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; } };