C語言雙向鍊錶

2022-02-22 10:33:14 字數 2221 閱讀 8371

今天寫了點雙向鍊錶的各種操作,寫插入的時候費了點時間,不過,現在看來還是值得耗費那點時間去寫的,這種小東西應該能信手拈來才行啊。

1

/*雙向鍊錶

*/2 #include 3 #include /*

strcmp(const char *,const char *) return 0 is equal*/4

5 typedef struct

dulnode

6stud;

10/*

建立,返回煉表頭指標,引數n-節點個數

*/11 stud *create(n);

12/*

查詢,返回節點位址,引數h-煉表頭指標,name為查詢條件

*/13 stud * search(stud *h,char *name);

14/*

刪除*/

15void del(stud *p);

16/*

顯示,引數-h,煉表頭節點,num-顯示節點個數

*/17

void show(stud *h,int

num);

18/*

求鍊錶長度

*/19

int length(stud *head);

20/*

插入節點,引數head-煉表頭節點,name-節點,n-節點位置

*/21 stud *insert(stud *head,char *name,int

n);

22int

main()

2336

void show(stud *head,int

num)

3745

if(num>length(head))

4650

if(strcmp(head->name,"") == 0)51

54else

5558

while

(sp)

59else

6569}70

}7172 stud *create(n)

7382 h->name[0] = '\0'

;83 h->prior =null;

84 h->next =null;

85/*

插入節點

*/86 p =h;

87for(i=0;i)

8895 p->next =s;

96 printf("

%d's name:\n

",i+1

);97 gets(s->name);

98 s->prior =p;

99 s->next = null;/*

末尾插入

*/100 p =s;

101}

102 p->next =null;

103return

(h);

104}

105106 stud * search(stud *head , char *name)

107117

else

118121

}122

if(re ==null)

123126

return

(re);

127}

128129

void del(stud *p)

130136

else

137142

}143

144int length(stud *head)

145

157}

158return

len;

159}

160161 stud *insert(stud *head , char *name , int

n)162

169 nhead =head;

170if(n>length(head)||n<0

)171

175/*

插入節點

*/176

while(cnt177181 p = (stud *)malloc(sizeof

(stud));

182if(p !=null)

183192

193return

nhead;

194 }

雙向鍊錶C語言

鍊錶結構定義 typedef struct node 建立鍊錶 int creat list struct node h h data 0 0 h llink null h rlink null return 1 清空鍊錶 int free list struct node h return 1 查...

C語言雙向鍊錶

雙向鍊錶基本結構 typedef struct pnode pnode 建立乙個雙向鍊錶,並列印出煉表中儲存的資料 include include 包含malloc函式 void main pnode 第乙個節點head pnode head malloc sizeof pnode head dat...

C語言雙向鍊錶

原文 c語言雙向鍊錶 今天寫了點雙向鍊錶的各種操作,寫插入的時候費了點時間,不過,現在看來還是值得耗費那點時間去寫的,這種小東西應該能信手拈來才行啊。1 雙向鍊錶 2 include 3 include strcmp const char const char return 0 is equal 4...