資料結構C 4 靜態鍊錶與雙向鍊錶

2021-10-03 05:33:20 字數 3657 閱讀 5884

1、靜態鍊錶的操作

//靜態鍊錶

#include

#include

#define maxsize 1000

#define ok 1

#define error -1

typedef

int elemtype;

typedef

int status;

typedef

struct

component,staticlinklist[maxsize]

;status initlist

(staticlinklist space)

//備用鍊錶

intmalloc_sll

(staticlinklist space)

status listlength

(staticlinklist l)

return j;

}status listinsert

(staticlinklist l,

int i,elemtype e)

return error;

}void

free_ssl

(staticlinklist space,

int k)

status listdelete

(staticlinklist l,

int i)

2、雙向鍊錶的操作

#include

#include

#define ok 1

#define error -1

typedef

int elemtype;

typedef

int status;

typedef

struct dulnodedulnode,

*dulinklist;

void

initlist

(dulinklist *l)

;void

createlist

(dulinklist *l)

;int

getelem

(dulinklist l,

int i)

;int

locateelem

(dulinklist l,elemtype key)

;void

dullinkinsert

(dulinklist l,

int i,elemtype e)

;void

deletedulist

(dulinklist l,

int i)

;void

display

(dulinklist l)

;int

main()

void

initlist

(dulinklist *l)

//建立

void

createlist

(dulinklist *l)

p->next=

null;}

//按序號查詢

intgetelem

(dulinklist l,

int i)

return p->data;

}int

locateelem

(dulinklist l,elemtype key)

return i;

}//指定位置插入

void

dullinkinsert

(dulinklist l,

int i,elemtype e)

s=(dulinklist)

malloc

(sizeof

(dulnode));

s->data=e;

s->next=p->next;

if(p->next!=

null

) p->next->prior=s;

p->next=s;

s->prior=p;

}//指定位置刪除

void

deletedulist

(dulinklist l,

int i)

q=p->next;

p->next=q->next;

q->next->prior=p;

free

(q);

}void

display

(dulinklist l)

printf

("\n");

if(i==0)

printf

("null!");

}

3、雙向鍊錶的合併

//雙向鍊錶

#include

#include

#define ok 1

#define error -1

typedef

int elemtype;

typedef

int status;

typedef

struct dulnodedulnode,

*dulinklist;

void

initlist

(dulinklist *l)

;void

createlist

(dulinklist *l)

;int

getelem

(dulinklist l,

int i)

;int

locateelem

(dulinklist l,elemtype key)

;void

dullinkinsert

(dulinklist l,

int i,elemtype e)

;void

deletedulist

(dulinklist l,

int i)

;void

display

(dulinklist l)

;dulinklist merge

(dulinklist la,dulinklist lb)

;int

main()

void

initlist

(dulinklist *l)

//建立

void

createlist

(dulinklist *l)

p->next=

null;}

void

display

(dulinklist l)

printf

("\n");

if(i==0)

printf

("null!");

}dulinklist merge

(dulinklist la,dulinklist lb)

else

}while

(pa!=

null

)while

(pb!=

null

)free

(la)

;free

(lb)

;return lc;

}

資料結構 鍊錶 雙向鍊錶

注意typedef的定義結構,以及dinklist的資料型別 typedef struct dnode dnode,dinklist 注意插入第乙個結點時,prior指標的空指向問題 if l next null 若l後繼結點為空 則省略該步驟 l next prior p 基本 頭插法建立雙向鍊錶...

資料結構鍊錶 靜態鍊錶

1 在這裡我們首先要複習一下鍊錶c語言的定義 這看起來很簡單,但實際上至關重要!data域 存放結點值的資料域。next域 存放結點的直接後繼的位址 位置 的指標域 鏈域 也就是說next域儲存的是乙個位址,這個位址是下一節點的位址。注意 鍊錶通過每個結點的鏈域將線性表的n個結點按其邏輯順序鏈結在一...

資料結構雙向鍊錶 C

博主 牆角黑貓 1 原理解釋 雙向鍊錶的理解是在每個節點之間存在雙向的連線,例如和單鏈表對比 單鏈表是 a b c d 每個節點是單向連線的,a只能指向b,從b無法直接到a。而雙向鍊錶是 a b c d 這樣就實現了a和b的完全互通。大家可以結合下圖理解一下!2 部分 include include...