鏈式儲存結構

2021-07-03 22:47:13 字數 2833 閱讀 1117

鍊錶的基本概念

鍊錶是一種線性表,但與陣列不同的是,它允許表中元素的儲存單元任意,由指標將儲存表元素的單元串聯起來,因此稱為鏈式儲存結構

鍊錶可以避免刪除或插入元素時移動大量元素,便於擴充套件儲存空間

對於每個資料元素ai來說,除了儲存其本身的資訊之外,還需儲存乙個指示其直接後繼或前驅的資訊。這兩部分資訊組成了資料元素ai的儲存映像,稱為節點,其中包括資料元素資訊的資料域和儲存後件儲存位置的指標域next或前件位址的指標域prev。

指標域可用動態指標變數來儲存前後件位址,亦可採用陣列變數來儲存前後件元素的陣列下標。

為了訪問方便,設head為鍊錶的「哨兵」,它的後件指標域next儲存鍊錶首元素的位址

鍊錶的型別定義

用陣列模擬

type

node=record  

data:elemtp;

next:integer;

end;

list=array[1..n] of node;

用指標型別:

point = ^node;

node= record

data : elemtp (可以為任意型別);

next: point ;

end;

鍊錶的形式

單向鍊錶

由於單鏈表的每個結點都有乙個資料域和乙個指標域,所以,每個結點都可以定義成乙個記錄。

雙向鍊錶

每個結點有兩個指標域和若干資料域,其中乙個指標域指向它的前趨結點,乙個指向它的後繼結點。它的優點是訪問、插入、刪除更方便,速度也快了。但「是以空間換時間」。 

鍊錶的形式

單向迴圈鍊錶:最後乙個結點的指標指向頭結點。

雙向迴圈鍊錶:最後乙個結點的指標指向頭結點,且頭結點的前趨指向最後乙個結點。

指標操作

宣告乙個指標變數:

var p:^integer;

生成乙個資料空間,用指標指向它:

new(p);

刪除p指向的資料空間:

dispose(p);

訪問p指向空間的資料:

p^:=20;

鍊錶的基本運算

1、構建鍊錶(creat_link)

2、插入操作(insert_link)

3、刪除操作(delet_link)

4、讀取操作(get_link)

構建單鏈表

procedure creat_link(var head:pointer);}

插入操作

//在單鏈表的第i個節點前插入元素x

procedure insert_link(x:elemenetype;i:integer;var head:pointer);

else writeln(『without』);}

刪除操作

//刪除單鏈表的第i個節點的操作如下

procedure delete_link(i:integer;var head:pointer);

{p:=head;j:=0;

whiel (p^.next<>nil) and (j

//讀取單鏈表的第i個元素的操作如下

function get_link(i:integer;var head:pointer):elementype;

{p:=head^.next;

j:=1;

while (p<>nil) and (j 練習

program link;

type

point=^node;

node=record

data:integer;

next:point;

end;

varh,p:point;

n,i:integer;

procedure insert(var h:point);

varp,q:point;

begin

new(p);

read(p^.data);

if (h=nil) or (p^.datanil) and (q^.next^.data

procedure print(h:point);

varp:point;

begin

p:=h;

while p<>nil do

begin

writeln(p^.data,' ');

p:=p^.next;

end;

end;

begin

readln(n);

h:=nil;

for i:=1 to n do

begin

insert(h);

end;

print(h);

end.

靜態鍊錶

用陣列模擬

鏈式儲存結構

鍊錶的基本概念 1 表頭結點 鍊錶中的第乙個結點,包含指向第乙個資料元素的指標以及鍊錶自身的一些資訊 2 資料結點 鍊錶中代表資料元素的結點,包含指向下乙個資料元素的指標和資料元素的資訊 3 尾結點 鍊錶中最後乙個資料結點,其下乙個元素指標為空,表示無後繼 main函式裡寫個測試程式 include...

鏈式儲存 結構

鏈式儲存 結構 功能 增加 刪除 查詢 替換 返回總個數 2018年5月11日15點33分 include include define ele int typedef struct linkarrary linkarray linkarray new void add linkarray l,el...

鏈式儲存結構

它不要求邏輯上相鄰的元素在物理位置上也相鄰.因此它沒有順序儲存結構所具有的弱點,但也同時失去了順序錶可隨機訪問的優點.編輯 一般在計算機的硬碟中,檔案都是鏈式儲存的。我們知道,多個 扇區組成乙個 簇,簇是計算機儲存資料的基本單位。而乙個檔案是儲存在多個在空間上也許並不相連的簇中的。這就是鏈式儲存。但...