鍊錶的基礎問題LeetCode第二題

2021-09-08 20:40:06 字數 1274 閱讀 3595

注:本人菜雞乙個,以後就在leetcode刷刷題這裡就隨便寫點刷題體會吧

鍊錶以前還是寫過的,但是不是特別清楚其中的一些實際操作,這次寫問題 2. add two numbers,就出現了點小麻煩。

1.leetcode報錯:member access within null pointer of type 『struct listnode』

這是我在使用指標p作為儲存二者相加的各位數字是剛開始的錯誤。這就是說我使用的指標p可能是個空指標。剛開始我是將p=result->next(result是我malloc過的),而且在迴圈是的判斷也沒有p!=null。

struct listnode* result=(struct listnode*)malloc(sizeof(struct listnode));

struct listnode* p=resul->next;

int low_digit=0;

int high_digit=0;

while((l1!=null)&&(l2!=null))

後來將p=result,在迴圈判斷中加上p!=null解決。

struct listnode* result=(struct listnode*)malloc(sizeof(struct listnode));

struct listnode* p=result;

int low_digit=0;

int high_digit=0;

while((l1!=null)&&(l2!=null)&&p!=null)

2.在每次迴圈中都申請了malloc了p->next,但是在當結果的位數與二者最大的位數相等時結果會多乙個0。

因為我申請之後p的最後val預設為0,當沒有該位是還是將0賦值,應該直接為null,所以加上乙個判斷條件。在滿足該條件時申請(多乙個0),不滿足時不申請直接返回即可。

舊**:

p->next=(struct listnode*)malloc(sizeof(struct listnode));

p=p->next;

新**:

if(high_digit==0&&l1->next==null&&l2->next==null)

p->next=(struct listnode*)malloc(sizeof(struct listnode));

p=p->next;

LeetCode 反轉鍊錶(鍊錶問題)

難度 簡單 反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null使用三個listnode,分別是prev,curr,next。curr是當前指標指向的節點,prev是curr的前乙個節點,頭節點的前乙個節點是null,next是curr的下乙個節點,用於遍歷鍊...

leetcode 鍊錶的排序問題

題目描述 在 o n log n 時間複雜度和常數級空間複雜度下,對鍊錶進行排序。例如 輸入 4 2 1 3 輸出 1 2 3 4。思路分析 因為要求在o nlogn 的時間複雜度,所以想到使用歸併排序。下面對歸併排序做個介紹。歸併排序 基本方法如下 1 把待排序序列的n個記錄看成n個有序子串行,每...

leetcode 相交鍊錶問題

目的 找到兩個鍊錶的相交節點並且返回該節點。示例 在節點c1處相交 演算法思想 因為兩個鍊錶的總長度一定,所以遍歷a b鍊錶,如果a b兩節點相交,則末尾節點一定相同。遍歷兩個單鏈表,若a鍊錶第一次遍歷完後,將該末尾節點指向b鍊錶的頭節點,同理,b鍊錶遍歷完後,將末尾節點指向a鍊錶的頭節點,如果遍歷...