《2022年C语言链表编 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言链表编 .pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、#include #include #include #define LEN sizeof(struct List) struct List char name8; char add20; char tel10; char e_mail20; struct List *next; ; typedef struct List *list; list creat(void) list head=NULL,p1=NULL,p2=NULL; int No=1; printf( 输入数据 (输入 stop 停止 ):n); head=(list)malloc(LEN); p1=head; p2=(lis
2、t)malloc(LEN); printf(%d:n,No+); printf( 姓名 :); scanf(%s,p2-name); while(strcmp(p2-name,stop) printf( 单位 :); scanf(%s,p2-add); printf( 电话 :); scanf(%s,p2-tel); printf( 邮箱 :); scanf(%s,p2-e_mail); p1-next=p2; p1=p2; p2=(list)malloc(LEN); printf(%d:n,No+); printf( 姓名 :); scanf(%s,p2-name); p1-next=NUL
3、L; free(p2); return head; void _change(list *head) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - char key_word20; list p1=(*head)-next; printf( 输入 stop 停止 n); do printf( 要修改的姓名:); scanf(%s,key_word); if(!strcmp(key_word,stop) break; while
4、(p1) if(strcmp(p1-name,key_word)=0) printf( 修改为 :n); printf( 姓名 :); scanf(%s,p1-name); printf( 电话 :); scanf(%s,p1-tel); break; else if(p1-next=NULL) printf( 未找到 !n); p1=p1-next; p1=(*head)-next; while(1); return; void _append(list *head) list end=*head,append=NULL; while(end-next) end=end-next; prin
5、tf( 输入 stop 停止 n); do printf( 添加新数据 :n); append=(list)malloc(LEN); printf( 姓名 :); scanf(%s,append-name); if(!strcmp(append-name,stop) free(append); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页 - - - - - - - - - break; printf( 单位 :); scanf(%s,append-add);
6、printf( 电话 :); scanf(%s,append-tel); printf( 邮箱 :); scanf(%s,append-e_mail); end-next=append; append-next=NULL; end=append; while(1); return; void _delete(list *head) char key_word20; list term_to_delete=NULL,upper=NULL; printf( 输入 stop 停止 n); do printf( 要删除的姓名:); scanf(%s,key_word); if(!strcmp(key_
7、word,stop) break; upper=*head; term_to_delete=(*head)-next; while(strcmp(key_word,term_to_delete-name)&term_to_delete-next) term_to_delete=term_to_delete-next; upper=upper-next; if(strcmp(key_word,term_to_delete-name)=0) upper-next=term_to_delete-next; free(term_to_delete); printf( 删除成功 !n); else pr
8、intf( 未找到 !n); while(1); return; void _check(list head) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - list check=NULL; char key_word20; printf( 输入 stop 停止 n); do check=head-next; printf( 输入要查找的姓名/电话 :); scanf(%s,key_word); if(!strcmp(key_
9、word,stop) break; if(key_word0=0&key_word0tel,key_word)&check-next) check=check-next; else while(strcmp(check-name,key_word)&check-next) check=check-next; if(!strcmp(check-tel,key_word)|!strcmp(check-name,key_word) printf( 姓名 :%-20s 单位 :%-20sn,check-name,check-add); printf( 电话 :%-21s 邮箱 :%-20sn,chec
10、k-tel,check-e_mail); else printf( 未找到 !n); while(1); return; void print(list head) list p=head-next; int No=1; while(p) printf(%d:n,No+); printf( 姓名 :%-20s 单位 :%-20sn,p-name,p-add); printf( 电话 :%-21s 邮箱 :%-20sn,p-tel,p-e_mail); p=p-next; return; void save(list head) list p=head-next; FILE *fp; 名师资料总
11、结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - if(fp=fopen(record.dat,w)=NULL) printf( 文件错误 !n); exit(0); while(p) if(fwrite(p,LEN,1,fp)!=1) printf( 保存错误 !n); exit(0); p=p-next; fclose(fp); printf( 成功 !n); system(pause); return; list load(void)
12、 FILE *fp; fp=fopen(record.dat,r); list head=(list)malloc(LEN),record=(list)malloc(LEN),record1=head; while(fread(record,LEN,1,fp)=1) record1-next=record; record1=record; record=(list)malloc(LEN); fclose(fp); record-next=NULL; return head; void main() list head=NULL; FILE *fp; int turn_to=0; if(fp=f
13、open(record.dat,r)=NULL) head=creat(); else fclose(fp); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - head=load(); do system(cls); switch(turn_to) default : break; case 1:_change(&head); break; case 2:_append(&head); break; case 3:_delete(&head); break; case 4:_check(head); break; case 5:save(head); break; case 6:print(head); break; if(turn_to=0&turn_to=1&turn_to=6); return; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -
限制150内