标签: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 };
标签:col struct first next class lis 利用 node sel
原文地址:https://www.cnblogs.com/smartheadliu/p/12831824.html