4 線性表 鏈式儲存 靜態鍊錶

2022-02-02 12:10:41 字數 1938 閱讀 1778

一開始對照書上的總覺得**不對!傻吊搗鼓了兩小時,總算弄出來了

自己用電腦打的感覺。。果然跟光看書不一樣,還是不能懶。

【靜態鍊錶說明】

1、0號節點為備用空間鍊錶的頭結點,maxsize-1號節點為實際鍊錶空間首結點。

2、需要使用者自己實現malloc和free函式。

3、辨明陣列中哪些分量未被使用的解決辦法是把所有未被使用、被刪除的分量用游標鏈成乙個備用的鍊錶。

4、由於其實質是用陣列替代指標,對於想要用沒有指標的語言實現單鏈表,是乙個很好的儲存結構。

5、其鏈節點資料域包括兩部分:data(存放資料)、cur(游標,存放後接節點的位置)

【注】1、靜態鍊錶初始化的時候(createvalue函式)一定要注意將最後乙個元素的下標置零

2、插入與刪除操作的過程中一定不要忘記對受影響的鍊錶節點前後進行游標改寫的操作

1 #include2 #include3 #include4

using

namespace

std;

5#define ture 1

6#define false 0

7#define ok 1

8#define error -3

9#define overflow -2

10 typedef int

status;

11 typedef string

elemtype;

12#define maxsize 100

13 typedef struct

nodeslinklist[maxsize];

17//

space[0]備用鍊錶的頭結點

18//

space[maxsize-1]實際鍊錶的頭結點

1920

void initspace_sl(slinklist &space)

2127}28

int malloc_sl(slinklist &space)

2936

37void free_sl(slinklist &space,int

k)38

42int listlength(slinklist &space)

4351

return

i;52}53

int createvalue(slinklist &space,int

num)

5462 space[0].cur=space[j].cur;

63 space[j].cur=0;64

return

ok;65}66

int insertlist(slinklist &space,int

i,elemtype s)

67//

找到第i-1個元素的下標

79 space[pos].cur=space[k].cur;//

一定要記得連線前後游標

80 space[k].cur=pos;

81return

ok;82}83

return

error;84}

85void delete_sl(slinklist &space,int pos)//

刪除第pos個節點(下標從0開始)

8697

int lost=space[k].cur;

98 space[k].cur=space[lost].cur;

99free_sl(space,lost);

100}

101void showlist(slinklist &space)

102110 cout111 cout<<"

------------------

"<112}

113int

main()

114

線性表 鏈式儲存結構 雙向鍊錶

雙向鍊錶結點結構 既然單鏈表可以有迴圈鍊錶,那麼雙向鍊錶當然也可以有。由於這是雙向鍊錶,那麼對於鍊錶中的某乙個結點p,它的後繼結點的前驅結點是它本身。實現 s next p s prior p prior p prior next s p prior s 關鍵在於交換的過程中不要出現矛盾,例如第四步...

線性表鏈式儲存

線性表鏈式儲存結構的建立 刪除最小值結點 值唯一 刪除某個指定值 不唯一 就地逆置 反向輸出 遞增排序 刪除重複結點 根據奇偶序號劃分成兩個帶頭結點的單鏈表。include stdio.h include stdlib.h typedef struct lnode lnode,llist void ...

線性表 鏈式儲存

概念 邏輯上相鄰的兩個資料元素在物理位置上可能相鄰也可能不相鄰,這中儲存結構為非順序映像或鏈式映像。特點 線性表的鏈式儲存結構的特點是可以用一組任意的儲存單元來儲存線性表中的資料,這組儲存單元可以是連續的,也可以是不連續的。由於這種特性,單鏈表中要取得第i個元素,必須從第乙個元素開始尋找,因此單鏈表...