15 反转链表
1 反转链表 2 //题目:输入一个链表,反转链表后,输出链表的所有元素 3 struct ListNode 4 { 5 int val; 6 struct ListNode* next; 7 ListNode(int x):val(x), next(NULL){} 8 }; 9 //思路:比如 1->2->3->4->5->6 10 //反转后 1<-2<-3 4<-5<-6 11 //为了防止3和4断开,需要以下操作 12 //首先知道结点3的前一个结点2, 因为我们需要把3的next指向2 13 //然后需要保存3的下一个结点4,以防止链表断开。 14 //因此需要定义3个指针,遍历到的结点,前一个结点,后一个结点 15 class Solution 16 { 17 public: 18 ListNode* ReverseList(ListNode* pHead) 19 { 20 if (pHead == NULL) 21 { 22 return NULL; 23 } 24 ListNode* pNodePre = NULL; 25 ListNode* pNodeRear = NULL; 26 ListNode* tmpNode = pHead; 27 while(tmpNode != NULL) 28 { 29 ListNode* tmpNext = tmpNode->next;//保存下一个结点 30 if (tmpNext == NULL) 31 { 32 pNodeRear = tmpNode; 33 } 34 tmpNode->next = pNodePre; 35 pNodePre = tmpNode; 36 tmpNode = tmpNext; 37 } 38 return pNodeRear; 39 } 40 41 };
在代码的世界尽情的翱翔吧!