資料結構雙向迴圈鍊錶的增刪

2021-09-18 08:10:28 字數 1882 閱讀 2185

建立乙個雙向鍊錶並實現增加和刪除以及求表長

**如下:

#include

#include

#include

#define ok 1

#define error 0

typedef

struct

student;

typedef

struct lnode lnode,

*linklist;

主函式部分

int

main()

函式方法

int

createlinklist

( linklist l )

while

( fscanf ( r,

"%s%d%d"

, n,

&t,&s )

!=eof

)fclose

(r);

l->pre=p;

//頭尾相連

p->next=l;

}

/*

*獲取該鍊錶的長度(不包括頭結點)

*/int

listlen

(linklist l)

printf

("表長為%d\n\n"

,len)

;return len;

}

void printlist (linklist l)

printf

("\n");

}

int

listinsert

(linklist l )if(

(j!=k)

||(p==

null))

printf

("***************=輸入要插入的學生資訊**********====\n");

printf

("*****姓名:");

scanf

("%s"

,s.name)

;printf

("*****學號:");

scanf

("%d"

,&s.id)

;printf

("*****成績:");

scanf

("%d"

,&s.score)

;printf

("輸入完成\n\n");

newn=

(lnode*

)malloc

(sizeof

(lnode));

newn->date= s ;

newn->pre=p->pre;

//將原先位置的節點的前指指標指向的的位址給新插入的節點的前指指標

p->pre->next=newn;

//將新節點的位址給原先節點的前乙個節點,新節點與前節點對接完成

newn->next=p;

//新節點的後指指標指向原先節點

p->pre=newn;

//原先節點的前指指標指向新插入節點,新節點與後節點對接完成

return ok;

}

int listdelete ( linklist l )if(

(j!=i-1)

||(i >

listlen

(q))

) p->pre->next=p->next;

p->next->pre=p->pre;

free

(p);

return ok;

}

資料結構 雙向迴圈鍊錶

近期我在學習資料結構,於是我自己整理了單鏈表 迴圈單鏈表 雙向鍊錶 雙向迴圈鍊錶的相關 以鞏固這段時間的學習,也希望能夠幫助初學者,希望大家在閱讀以下 時發現問題糾正於我,一起 cycdoublelist.h ifndef cycdoublelish h define cycdoublelish h...

資料結構 雙向迴圈鍊錶

typedef struct node node,pnode pnode init dc list void 雙向迴圈鍊錶的初始化 pnode new node int dat 新建乙個節點 把位址為pnew的節點插入到雙向迴圈鍊錶的尾部 頭節點的前面 bool list add tail pnod...

資料結構 雙向鍊錶,迴圈鍊錶

也許是自己太小看資料結構,練習了幾天還在第二章徘徊,可自己覺得基礎還是要打牢的好 總結一下 第乙個是雙向鍊錶,include include typedef struct node node,linklist void creat linklist l else int insert linklis...