【LeetCode从零单刷】Reverse Linked List


タイトル:
Reverse a singly linked list.
回答:
シングルチェーンテーブルを反転します.よくあるテーマです.考え方は一時的に2つを考えて、1つはいくつかの空間を浪費して、1つの反転したチェーンテーブルを再構築して、コードはこのようです;2つ目は、元のチェーンテーブルノードを単独で保存するたびに、nextポインタが元の前のノードを指すようにすることである.
主に私が言いたいのはコード上の問題です.
  • struct,classタイプのポインタについて.ポインタを使用する前に、メモリ領域を割り当てることを忘れないでください!!!そうでなければ、不可知な位置を指し、保護された空間である可能性があります.
  • C++のうち、structもnewでメモリスペースを割り当てたポインタを返すことができます.Cでは、(ListNode*)malloc(sizeof(ListNode))としか書けません.
  • /**
     * 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) {
            ListNode* tmphd = head;
            ListNode* ans   = NULL;
            while(tmphd != NULL)
            {
                ListNode* tmp = (ListNode*)malloc(sizeof(ListNode));
                // ListNode* tmp = new ListNode(tmphd->val);   // C++   
                tmp->val    = tmphd->val;
                tmp->next   = ans;
                ans         = tmp;
                tmphd       = tmphd->next;
            }
            return ans;
        }
    };