一、靜態鍊錶的定義
二、靜態鍊錶的插入和刪除操作
三、靜態鍊錶優缺點
單鏈表實現的乙個很大的作用**於指標,但如果沒有指標之前,該如何來描述單鏈表呢?有人提出用陣列來代替指標,來描述單鏈表。接下來就看看它是如何實現的?
用陣列來存放元素的值和位址。由於陣列元素的個數一旦確定就不會改變,因而稱這種鍊錶為靜態鍊錶。
陣列元素由兩部分組成:data和cur。資料域data,用來存放資料元素(要處理的資料);游標cur相當於單鏈表的next指標,存放該元素的後繼在陣列中的下標。
要想實現元素的插入和刪除首先靜態鍊錶要解決的是:如何用靜態模擬動態鍊錶結構的儲存空間的分配,需要時申請,無用時釋放。
在動態鍊錶中,結點的申請和釋放分別用malloc()和free()函式來實現。在靜態鍊錶中,操作的是陣列,不存在動態鍊錶的結點申請和釋放問題,所以我們需要自己實現這兩個函式才能做插入和刪除操作。
**如下(示例):
#includevoid init(component *l)//初始化靜態鍊錶
else
return 0;
while( (ch=getchar()) != '\n' )
else
return 0;
}return t;
}short malloc(component *l)//分配空間
return 0;//失敗返回0
}void free(component *l, short i) //**空間
void disp(component *t, component *l)//顯示靜態鍊錶資料
printf("\n");
}void purge(component *t, component *l) //刪除重複資料
else }}
}
優點:在插入和刪除操作時,只需要修改游標,不需要移動元素,從而改進了在順序儲存結構中插入和刪除操作需要移動大量元素的缺點
缺點:沒有解決連續儲存分配帶來的表長難以確定的問題
失去了順序儲存結構隨機訪問的特性。
資料結構 靜態鍊錶和動態鍊錶
通過指標將資料連線起來 整個資料結構中,很重要的一點是,初始化和銷毀對應,插入和刪除對應,有malloc new 有free delete 一定要對應。鍊錶的各項操作,最關鍵的,其實就是找到被操作元素的上乙個元素,插入位置的上乙個元素,或者要刪除元素的上乙個元素,這都是非常關鍵的,同時也要注意,鍊錶...
資料結構鍊錶 靜態鍊錶
1 在這裡我們首先要複習一下鍊錶c語言的定義 這看起來很簡單,但實際上至關重要!data域 存放結點值的資料域。next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 也就是說next域儲存的是乙個位址,這個位址是下一節點的位址。注意 鍊錶通過每個結點的鏈域將線性表的n個結點按其邏輯順序鏈結在一...
資料結構 靜態鍊錶
首先我們讓陣列的元素都是由兩個資料域組成,data和cur。也就是說,陣列的每乙個下標都對應乙個data和乙個cur。資料域data用來存放資料元素,也就是通常我們要處理的資料 而游標cur相當於單鏈表中的next指標,存放該元素的後繼在陣列中的下標。我們把這種用陣列描述的鍊錶叫做靜態鍊錶。陣列的第...