Leetcode 206

来源:互联网 发布:怎么办淘宝 编辑:程序博客网 时间:2024/04/20 06:43

206. Reverse Linked List

My Submissions
Total Accepted: 86124 Total Submissions: 225095 Difficulty: Easy

Reverse a singly linked list.

第一个想到的是栈,把每个节点依次存入,在出栈变可直接获得答案 ;

代码如下 :

class Solution {public:    ListNode* reverseList(ListNode* head) {          stack<ListNode*>stk ;      if (  head == NULL )        return NULL ;      while (head){          stk.push(head) ;          head = head -> next ;      }      ListNode *p , *q , *resHead ;      p = resHead = stk.top() ;      stk.pop() ;      while (stk.size() > 0 )        {    q = stk.top() ;           if (p == resHead) {             p = resHead ->next = q ;             stk.pop() ;               }               else {               p -> next = q ;               p = q ;            stk.pop() ; }         }        p -> next = NULL ;        return resHead ;    }};  // 容易理解,但是代码太长 ;
后来想到另外一种方法 。直接把新的头结点移动就行了 ,诶。
<pre name="code" class="cpp">class Solution {public:    ListNode* reverseList(ListNode* head) {      if (  head == NULL )        return NULL ;     ListNode *pre=NULL , *q=head , *tmp=NULL;    while (q){        tmp = q->next; // 要保存下一个节点,不然整个链表就断了 ;        q -> next = pre ;        pre = q ;        q = tmp ;    }      return pre ;    }};




0 0
原创粉丝点击