双向链表-查找 叁歲伎倆 2022-05-28 06:20 205阅读 0赞 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #include<windows.h> #define N 10 #define Null 0 typedef struct node{ char name[20]; struct node *Previous,*Next; }student;//用typedef语句后,用student表示struct node student *create(int n){ student *p,*h,*s;//h是head的缩写是链表头元素,s是用来存新建元素的变量,p是用来不断移动配合链接的临时变量 int i; if((h=(student *)malloc(sizeof(student)))==Null){ printf("不能分配内存空间!\n"); } h->name[0]='\0'; h->Previous=Null; h->Next=Null; p=h; for(i=0;i<n;i++){ if((s=(student *)malloc(sizeof(student)))==Null){ printf("不能分配内存空间!\n"); exit(0); }//如果内存空间不能分配就退出程序 p->Next=s; printf("请输入第%d个人的姓名\t",i+1); scanf("%s",&s->name); s->Previous=p; s->Next=Null; p=s; } h->Previous=p; p->Next=h; return (h); } int search(student *h,char *x){ //*x是要搜索的人的姓名字符串的地址,代表这条字符串 int n=0; student *p;//不断移动的临时指针 char *y;//临时用来比较判断的字符串指针 p=h->Next;//链表头元素name是"\0",所以从第二个结点开始 while(p!=h){ n++; y=p->name; if(strcmp(y,x)==0)return(n); else p=p->Next; } printf("没有查找到该数据!\n");//当在整条链表中没找到对应结点时才会执行到这一条语句 } void print(student *h){ student *p;//临时指针 p=h->Next;//从第二个结点开始 printf("数据信息为:\n"); while(p!=h){ //输出到头节点之前也就是尾结点 printf("%s\n",p->name); p=p->Next; } printf("\n"); } int main(){ int number,searchpoint;//存长度值和搜索值 char studname[20];//搜索依据的字符串 student *head; number=N;//链表长度为10 system("cls");//清屏 system("time/t");//显示系统时间 head=create(number); print(head); printf("输入你要寻找的人的名字\n"); scanf("%s",&studname); //system("cls"); searchpoint=search(head,studname);//获取到字符串对应序号 printf("%d\n",searchpoint);//输出序号 return 0; } ![这里写图片描述][70] [70]: /images/20220528/166221551fb7420f87d70c08eaffc2a1.png
相关 双向链表 一种更复杂的链表是“双向链表”或“双面链表”。每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空 灰太狼/ 2022年12月21日 04:54/ 0 赞/ 221 阅读
相关 双向链表 一:双向链表 双向链表的节点包含数据域,前置指针域和后置指针域 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_ ゝ一世哀愁。/ 2022年11月05日 12:57/ 0 赞/ 221 阅读
相关 双向链表 前面叙述了关于单链表、双端链表、有序链表的结点插入以及遍历查找等示例。这几种链表都只能从前往后进行遍历,反向遍历是非常麻烦的一件事。 考虑一下下面这个情况:如果文本编辑 亦凉/ 2022年07月18日 05:29/ 0 赞/ 246 阅读
相关 双向链表 一、解析 在单链表中,有了next指针,要查找下一节点的时间复杂度为O(1),如果要查找的是上一节点的话,最坏的时间复杂度是O(n)了,以为每次都要从头开始查找。为了克服这个 「爱情、让人受尽委屈。」/ 2022年07月03日 13:57/ 0 赞/ 301 阅读
相关 双向链表 /双向链表/ include<stdio.h> typedef struct dbnode { int num; 骑猪看日落/ 2022年06月16日 13:08/ 0 赞/ 240 阅读
相关 双向链表-查找 include<stdio.h> include<stdlib.h> include<string.h> include<conio.h> 叁歲伎倆/ 2022年05月28日 06:20/ 0 赞/ 206 阅读
相关 双向链表和双向循环链表 双向链表和双向循环链表 和单向链表相比,多了一个前驱结点。如果他为空,那么next和prior都指向自己。而对于双循环链表,只需要最后一个元素的next指向head->n ╰+哭是因爲堅強的太久メ/ 2022年05月16日 01:29/ 0 赞/ 308 阅读
相关 双向链表 Problem Description 学会了单向链表,我们又多了一种解决问题的能力,单链表利用一个指针就能在内存中找到下一个位置,这是一个不会轻易断裂的链。但单链表有一个弱 忘是亡心i/ 2022年05月10日 04:34/ 0 赞/ 316 阅读
相关 双向链表 题目描述 构建一个双向链表并进行删除和插入操作,按要求输出。 输入 输入: 第一行输入元素个数M 第二行输入M个元素 第三行输入删除位置 第四行输入插入位 野性酷女/ 2022年04月04日 05:48/ 0 赞/ 290 阅读
相关 双向链表 【一】双向链表 > 单向链表,查找的只能是一个方向,而双向链表可以向前或向后查找。 > 单向链表不能自我删除,需要靠辅助节点;而双向链表可以自我删除 > 双向链表中的 小咪咪/ 2021年08月12日 00:11/ 0 赞/ 475 阅读
还没有评论,来说两句吧...