码迷,mamicode.com
首页 > 其他好文 > 详细

【剑指offer】反转链表

时间:2020-05-05 19:42:08      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:col   struct   first   next   class   lis   利用   node   sel   

1. 利用栈:后进先出

  将链表从头到尾压入栈中,再从栈中pop出来,对链表从头到尾赋值。

 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         stack<int> s;
13         ListNode* p=pHead;
14         while(p)
15         {
16             s.push(p->val);
17             p=p->next;
18         }
19         p=pHead;
20         while(!s.empty())
21         {
22             p->val=s.top();
23             s.pop();
24             p=p->next;
25         }
26         return pHead;
27     }
28 };

 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* cur;
13         ListNode* nxt;
14         ListNode* first;
15         if(!pHead)
16             return NULL;
17         else
18             first=cur=pHead;
19         if(!cur->next)
20             return pHead;
21         nxt=cur->next;
22         while(nxt)
23         {
24             cur=nxt;
25             nxt=nxt->next;
26             cur->next=pHead;
27             pHead=cur;
28         }
29         first->next=NULL;
30         return pHead;
31     }
32 };

 

【剑指offer】反转链表

标签:col   struct   first   next   class   lis   利用   node   sel   

原文地址:https://www.cnblogs.com/smartheadliu/p/12831824.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!