資料結構筆記 靜態鍊錶

2021-10-05 13:51:24 字數 1958 閱讀 8143

目錄

一、什麼是靜態鍊錶

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...