剛學資料結構,被表弄得有點懵。
順序表,說它是陣列,它也不是陣列,畢竟陣列固定了長度,而它又不像鍊錶一樣那麼的直觀(各種操作可以通過畫圖來清楚思路),先說順序表和陣列的區別。
順序表是在計算機記憶體中用陣列的形式儲存的線性表,用一組位址連續的儲存單元一次儲存資料元素的線性結構。
而陣列是從物理儲存儲存的角度來說的。
可以理解為,順序表是陣列範圍內很小的一部分(畢竟它只是線性的資料結構,而陣列可以儲存的東西遠超於線性的儲存結構)。順序表的優點在於,可以通過分配記憶體改變陣列的大小,而且支援隨機訪問,而鍊錶不支援隨機訪問,只能從頭到尾。
他們乙個共同點就是,都是有前驅和後驅的。
在插入和輸出某個元素這樣的操作來說,順序鍊錶非常麻煩。
分配空間給結構體裡面的指標(相當於陣列的首指標),儲存陣列的長度及空間大小;
查詢元素位置很簡單(i從0開始,符合陣列的思維。找到位置直接返回。)
插入元素,首先判斷,插入的位置是否符合長度(這裡要用人類的思維,因為插入的位置永遠從1開始)
再判斷長度是否超過空間記憶體了,超過就再次增加分配空間。
每次分配完還得判斷是否分配成功 if(!l.elem) exit(-1),步驟十分繁瑣。
然後用指標指向所在陣列的位置(!!陣列的位置通常和我們想的位置有1的差別),
然後從後面往前往後覆蓋。空出乙個位置就可以弄進去了。
刪除(**如下)和插入差不多,判斷位置的合理性,定位位置,然後從後往前覆蓋,別忘了這時候第二個指標的座標是l.length畢竟你要覆蓋到最後乙個元素。
再說鍊錶,不多說,先上圖。
這是尾插法逆序插入資料
資料結構 線性表 鏈式表(單鏈表)
不要求邏輯上相鄰的元素在物理儲存上相鄰,使用指標來表示元素之間的邏輯關係。優點 對線性表進行插入刪除操作時不需要移動大量的元素,只需要修改對應元素的指標域即可,方便省時 不需要為整個線性鍊錶提前分配足夠的儲存空間 當節點不再使用時,可以將儲存空間進行及時的 template class listno...
順序錶鏈表聯合操作
ifndef linlist h define linlist h endif include include include include typedef int status typedef int datatype typedef int status typedef int datatyp...
資料結構 線性表鏈式儲存 鍊錶 單鏈表
定義 單鏈表是一種鏈式訪問的資料結構,用一組位址任意的儲存單元存放線性表中的資料元素。鍊錶中的資料是以節點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。鍊錶特點 根據線性表的長度動態的申請儲存空間,以解決順序儲...