目錄
一、什麼是靜態鍊錶
1.單鏈表和靜態鍊錶
二、如何定義乙個靜態鍊錶
1.第一種方式
2.第二種方式
3.驗證
三、基本操作的實現
四、總結
單鏈表:各個結點在記憶體中星羅棋布、散落天涯
靜態鍊錶:分配一整片連續的記憶體空間,各個結點集中安置
每個資料元素4b,每個游標4b(每個結點功8b),設起始位址為addr,e1的存放位址為addr+8*2
1)定義結構體
2)宣告乙個陣列,作為靜態鍊錶,占用連續儲存空間
1)定義結構體
等價於
2)宣告乙個陣列,作為靜態鍊錶,占用連續儲存空間
等價於
結論:slinklist b —— 相當於定義了乙個長度為maxsize的node型陣列
1)初始化靜態鍊錶
把a[0]的next設為-1
2)查詢
從頭節點出發挨個往後遍歷結點
注:某乙個位序的結點不是某一陣列下標的結點
位序:結點在邏輯上的順序
陣列下標反映各個結點在物理上的順序
3)插入位序為i的結點
①找到乙個空的結點,存入資料元素
②從頭結點出發找到位序為i-1的結點
③修改新結點的next
④修改i-1號結點的next
注:找空結點時候,可能會存在髒資料,所以在宣告變數時,可讓next為某個特殊值
4)刪除某個結點
①從頭節點出發找到前驅結點
②修改前驅結點的游標
③被刪除結點next設為-2
靜態鍊錶:用陣列的方式實現的鍊錶注:
①0號結點充當頭結點
②游標為-1表示已經到達表尾
③游標充當「指標」
④用乙個特殊的數值標記空閒結點
優點:增、刪操作不需要大量移動元素
缺點:不能隨機訪問,只能從頭節點開始依次往後查詢;容量固定不可變
適用場景:
①不支援指標的低階語言
②資料元素數量固定不變的場景(如作業系統的檔案分配表fat)
資料結構鍊錶 靜態鍊錶
1 在這裡我們首先要複習一下鍊錶c語言的定義 這看起來很簡單,但實際上至關重要!data域 存放結點值的資料域。next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 也就是說next域儲存的是乙個位址,這個位址是下一節點的位址。注意 鍊錶通過每個結點的鏈域將線性表的n個結點按其邏輯順序鏈結在一...
資料結構 靜態鍊錶
首先我們讓陣列的元素都是由兩個資料域組成,data和cur。也就是說,陣列的每乙個下標都對應乙個data和乙個cur。資料域data用來存放資料元素,也就是通常我們要處理的資料 而游標cur相當於單鏈表中的next指標,存放該元素的後繼在陣列中的下標。我們把這種用陣列描述的鍊錶叫做靜態鍊錶。陣列的第...
資料結構 靜態鍊錶
include using namespace std struct node typedef node linklist define maxsize 20 void init linklist list int getlength linklist list int malloc linklis...