题目描述
输入一个链表,反转链表后,输出新链表的表头;
解题思路:
(1)新建一个链表,表头为原链表的第一个结点;
(2)则原来链表的表头为第二个元素;
注:最后要将新链表的最后一个结点的next指针赋值为空。
1 /* 2 struct ListNode { 3 int val; 4 struct ListNode *next; 5 ListNode(int x) : 6 val(x), next(NULL) { 7 } 8 };*/ 9 class Solution { 10 public: 11 ListNode* ReverseList(ListNode* pHead) { 12 if(pHead == NULL) 13 { 14 return NULL; 15 } 16 17 ListNode *pHeadNew = pHead; //新链表的头结点 18 19 ListNode *pCurrent = pHead -> next; //将第二个结点作为当前结点 20 ListNode *pNext = NULL; 21 22 while(pCurrent != NULL) 23 { 24 pNext = pCurrent -> next; 25 pCurrent -> next = pHeadNew; //更新当前链表的头结点 26 pHeadNew = pCurrent; 27 pCurrent = pNext; 28 } 29 30 pHead -> next = NULL; //将新链表的表头的下一结点指向空 31 return pHeadNew; 32 } 33 };