欢迎来到天天文库
浏览记录
ID:38470884
大小:25.00 KB
页数:3页
时间:2019-06-13
《查找[1].双向链表》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1、查找 假若我们要在一个带表头的双向循环链表中查找数据域为一特定值的某个结点时,我们同样从表头结点往后依次比较各结点数据域的值,若正是该特定值,则返回指向结点的指针,否则继续往后查,直到表尾。 下例就是应用双向循环链表查找算法的一个程序。 #include<stdio.h> #include<malloc.h> #defineN10 typedefstructnode { charname[20]; structnode*llink,*rlink; }stud; st
2、ud*creat(intn) { stud*p,*h,*s; inti; if((h=(stud*)malloc(sizeof(stud)))==NULL) { printf("不能分配内存空间!"); exit(0); } h->name[0]=’ ’; h->llink=NULL; h->rlink=NULL; p=h; for(i=0;i<n;i++) { if((s=(stud*)malloc(sizeof(stud)))
3、==NULL) { printf("不能分配内存空间!"); exit(0); } p->rlink=s; printf("请输入第%d个人的姓名",i+1); scanf("%s",s->name); s->llink=p; s->rlink=NULL; p=s; } h->llink=s; p->rlink=h; return(h); } stud*search(stud*h,char*x) { stu
4、d*p; char*y; p=h->rlink; while(p!=h) { y=p->name; if(strcmp(y,x)==0) return(p); elsep=p->rlink; } printf("没有查找到该数据!"); } voidprint(stud*h) { intn; stud*p; p=h->rlink; printf("数据信息为:"); while(p!=h) { printf(
5、"%s",&*(p->name)); p=p->rlink; } printf(""); } main() { intnumber; charstudname[20]; stud*head,*searchpoint; number=N; clrscr(); head=creat(number); print(head); printf("请输入你要查找的人的姓名:"); scanf("%s",studname); searchpoi
6、nt=search(head,studname); printf("你所要查找的人的姓名是:%s",*&searchpoint->name); }
此文档下载收益归作者所有