您的位置:首页 > Web前端

[剑指Offer] 15.反转链表

2017-11-20 11:22 411 查看
题目描述

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

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


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: