原文:
c語言雙向鍊錶
今天寫了點雙向鍊錶的各種操作,寫插入的時候費了點時間,不過,現在看來還是值得耗費那點時間去寫的,這種小東西應該能信手拈來才行啊。
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語言 雙向鍊錶
typedef struct datalistdatalist 頭插法插入 沿next指標查詢 返回 null 或pos處的元素指標 datalist value datalist head,const unsigned int pos if i pos return op else return ...