演算法學習 2 4 鍊錶

2021-10-06 16:38:36 字數 1681 閱讀 9300

前言:在儲存一大波數的時候我們通常用的是陣列,但有時候陣列顯得不太靈活

例如:從小到大排好的一串數字:2 3 5 8 9 10 18 26 32,我們要插入6使得其順序依然不變,如果用陣列的話就要讓8以及8往後的數都要往後挪一位,很浪費時間,但如果用鍊錶操作只需要將5的指標指向6的指標,再將6的指標指向8,這樣一組數字就串起來啦!

(對指標不了解的朋友建議學習鍊錶之前先了解指標)

—————————————————————————————————

鍊錶是由一種叫做節點的結構體型別構成的。

下面我們來進行操作。在鍊錶中輸入n個數,並將其輸出:

#include

#include

//使用malloc函式需要用到的標頭檔案

struct node

;struct stack

;int

main()

else

q = p;

//指標q也指向該節點

}printf

("\n");

t = head;

//輸出鍊錶中的所有數

printf

("鍊錶中的資料為:");

while

(t !=

null

)return0;

}

插入操作**:

在上述**中新增的**是:

printf

("請輸入插入的數:");

scanf

("%d"

,&a)

;//讀入待插入的數

printf

("\n");

t = head;

//從鍊錶的頭部開始遍歷

while

(t !=

null

) t = t->next;

//繼續下乙個節點

}

完整**:

#include

#include

//使用malloc函式需要用到的標頭檔案

struct node

;struct stack

;int

main()

else

q = p;

//指標q也指向該節點

}printf

("\n");

printf

("請輸入插入的數:");

scanf

("%d"

,&a)

;//讀入待插入的數

printf

("\n");

t = head;

//從鍊錶的頭部開始遍歷

while

(t !=

null

) t = t->next;

//繼續下乙個節點

}//輸出鍊錶中的所有數

t = head;

printf

("鍊錶中的資料為:");

while

(t !=

null

)return0;

}

結果:

演算法學習 反轉鍊錶

輸入乙個鍊錶的頭結點,將這個鍊錶反轉並輸出它的新的頭結點 public class listnode 方法一 public class solution h1.next null return head 方法二 其實我寫的這兩個差不多,為什麼要寫相似的兩個?因為我要學習區別使用p和p.next的區別...

演算法學習之鍊錶反轉

摘要 鍊錶逆轉是面試環境中經常遇到的一道題目,也是我們在實際開發中可能會遇到的開發需求。和線性逆轉不一樣,單向鍊錶的節點需要乙個乙個進行處理。有需要的朋友可以看一下,如果有沒考慮周全的地方歡迎指正。為了顯示兩者之間的區別,我們分別對線性記憶體和鍊錶進行逆 status normal revert i...

演算法學習之路 反轉鍊錶

給定乙個常數k以及乙個單鏈表l,請編寫程式將l中每k個結點反轉。例如 給定l為1 2 3 4 5 6,k為3,則輸出應該為3 2 1 6 5 4 如果k為4,則輸出應該為4 3 2 1 5 6,即最後不到k個元素不反轉。輸入格式 每個輸入包含1個測試用例。每個測試用例第1行給出第1個結點的位址 結點...