Leetcodeブラシ問題43-206.反転チェーンテーブル(C++詳細解法!!)


タイトルソース:リンク:[https://leetcode-cn.com/problems/reverse-linked-list/].
206.チェーンテーブルの反転
  • 1.問題の説明
  • 2.マイソリューション
  • 3.オオカミたちの解決策
  • 4.私の収穫
  • 1.問題の説明
    単一チェーンテーブルを反転します.例1:
      : 1->2->3->4->5->NULL
      : 5->4->3->2->1->NULL
    

    ステップ:
                 。             ?
    

    2.私のソリューション
    ネット上の資料を探しました:構想は非再帰方式(つまり反復):
  • 現在のノードの次のノードtmp=cur->next
  • を先に保存する
  • head->nextドメインはpre
  • を指す.
  • preを先ほどのheadに移動させる
  • headを次のノード(すなわち保存tmpノード)に移動する、次の
  • を行う.
    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode* reverseList(ListNode* head) {
            if(head == NULL || head->next == NULL) //   0 1    
            {
                return head;
            }
            ListNode* pre = NULL;
            ListNode* cur = head;
            while(cur != NULL)
            {
                ListNode* tmp = cur->next;   //  p     ,                
                cur->next = pre;			 //p->next       
                pre = cur;					 //        p,      
                cur = tmp;					 //p      p        
            }
            return pre;
        }
    };
    

    3.オオカミたちの解決策
    ガラガラ、転送ドアもリンク:(図文並茂はもっと理解できるよ)[https://blog.csdn.net/Mikeoperfect/article/details/72642583]....
    4.私の収穫
    がんばってください...自分の头がとても愚かだと感じます!!!
    2009/4/2胡雲雲は南京で43