[剑指Offer] 15.反转链表

来源:互联网 发布:以色列人工智能武器 编辑:程序博客网 时间:2024/06/06 03:50
题目描述

输入一个链表,反转链表后,输出链表的所有元素。

【思路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 };