题目描述
输入一个链表,反转链表后,输出链表的所有元素。
【思路1】三个指针在链表上同时滑动。
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 ListNode* p = pHead; 13 ListNode* q = NULL; 14 ListNode* r = NULL; 15 while(p != NULL){ 16 r = p->next; 17 p->next = q; 18 q = p; 19 p = r; 20 } 21 return q; 22 } 23 };
【思路2】头插法
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 ListNode* p = pHead; 13 ListNode* q = NULL; 14 while(p != NULL) { 15 ListNode* temp = p->next; 16 p->next = q; 17 q = p; 18 p = temp; 19 } 20 return q; 21 } 22 };