前言:在儲存一大波數的時候我們通常用的是陣列,但有時候陣列顯得不太靈活
例如:從小到大排好的一串數字: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個結點的位址 結點...