ImageVerifierCode 换一换
格式:DOCX , 页数:55 ,大小:25.44KB ,
资源ID:17393607      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17393607.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单链表图书信息查询交并差折半查找书名通信录Word文档下载推荐.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单链表图书信息查询交并差折半查找书名通信录Word文档下载推荐.docx

1、%d.t%sn,i+1,infoi);/主菜单void menu() system(cls* 1.图书信息查询 *n* 2.图书信息增加 *n* 3.退出 *n请输入要操作的序号: int isExist(char number) /判断输入的书号是否已经存在 struct student *p; p=head; while(p!=NULL & (strcmp(p-optname0,number)!=0) p=p-next; if(p=NULL) return 0; else return 1;/增加图书信息模块void addIn() char name5MAX_NAME; while(1)

2、 system(*n* 输入图书的信息,以输入学号为#结束输入 *n输入图书学号: fflush(stdin); scanf(%s,name0); if(isExist(name0) printf(!该学号已经存在,请重新输入。n按任意键重新输入.n getch(); else if(strcmp(name0,#)=0) printf(输入结束。按任意键返回主菜单.n getch(); return; for(i=1;输入图书%s:,infoi); fflush(stdin); scanf(,namei); p=(struct student *)malloc(sizeof(struct st

3、udent); for(i=0;i+) strcpy(p-optnamei,namei); p-foundflag=0; if(head=NULL) head=p; tail=p; else tail-next=p; tail-next=NULL; /*/搜索图书信息模块int search_By(char name,int index) int i,n=1; struct student *q; foundone=0; q=head; if(head=NULL) return 0; while(q!=NULL) q- q=q- totalfound=0; /标志* 查询信息如下 *n序号i+

4、) printf(t%sn if(strcmp(q-optnameindex,name)=0) q-foundflag=1; /标志已查询过的书籍信息 totalfound+; foundone=1;%d.,n); /序号,q-optnamei); /显示书籍信息 n+; if(foundone=0) return 1; return 2;void searchFunc(int mission) int flag,index; char nameMAX_NAME; menu_search();输入要查询的项目序号: scanf(%d,&index); index-; if(index4) /判

5、断是否在15之间输入的序号有误! getch(); return;输入【%s】内容:,infoindex);,name); flag=search_By(name,index); switch (flag) case 0:printf(当前没有可用的图书信息break; case 1:没有找到相关的图书信息 case 2:【%d】条信息已找到,totalfound); if(mission=1),按任意键返回主菜单.n/*/主函数void main() int order; menu();order); switch (order) case 1:searchFunc(1); case 2:a

6、ddIn(); case 3:exit(0); default:输入的序号有误,请检查后重新输入.n break;数据结构C语言版 折半查找/* 数据结构C语言版 折半查找 P219 编译环境:Dev-C+ 4.9.9.2 日期:2011年2月15日 */#define N 11 / 数据元素个数 typedef int KeyType; / 设关键字域为整型 typedef struct / 数据元素类型 KeyType key; / 关键字域 int others; / 其它部分 ElemType;/ Search_Seq.h 静态查找表的顺序存储结构 typedef struct / 数

7、据元素存储空间基址,建表时按实际长度分配,0号单元留空 ElemType *elem; int length; / 表长度 SSTable;ElemType rN= 05,1,13,2,19,3,21,4, 37,5,56,6,64,7,75,8, 80,9,88,10,92,11 / 数据元素(以教科书P219的数据为例),全局变量 / 静态查找表(顺序表和有序表)的基本操作(7个) / 构造一个含n个数据元素的静态顺序查找表ST(数据来自全局数组r) int Creat_Seq(SSTable *ST,int n) (*ST).elem = (ElemType *)calloc(n+1,

8、sizeof(ElemType); / 动态生成n+1个数据元素空间(0号单元不用) if(!(*ST).elem) for( i = 1; i = n; i+) *(*ST).elem+i) = ri-1; / 将全局数组r的值依次赋给ST (*ST).length = n; return 1;/ 重建静态查找表为按关键字非降序排序 void Ascend(SSTable *ST) int i, j, k; for(i = 1; (*ST).length; k = i; (*ST).elem0 = (*ST).elemi; / 待比较值存0单元 for(j = i+1; j = (*ST).

9、length; j+) /从中找到第i小的值 if (*ST).elemj.key (*ST).elem0.key) k=j; (*ST).elem0=(*ST).elemj; if(k != i) / 有更小的值则交换 (*ST).elemk=(*ST).elemi; (*ST).elemi=(*ST).elem0;/ 构造一个含n个数据元素的静态按关键字非降序查找表ST,/ 数据来自全局数组r int Creat_Ord(SSTable *ST,int n) int f; f = Creat_Seq(ST,n); /构建一个静态表 if( f ) /静态表存在,则对其进行重建 Ascend

10、(ST); return f;/ 销毁表ST int Destroy(SSTable *ST) free(*ST).elem); (*ST).elem = NULL; (*ST).length = 0;/ 算法9.2 P220 / 在有序表ST中折半查找其关键字等于key的数据元素。若找到,则函数/ 值为该元素在表中的位置,否则为0。int Search_Bin(SSTable ST,KeyType key) int low, high, mid; low = 1; / 置区间初值 high = ST.length; while(low = high) mid = (low + high) /

11、 2; if(key = ST.elemmid.key) / 找到待查元素 return mid; else if(key ST.elemmid.key) high = mid - 1; / 继续在前半区间进行查找 low = mid + 1; / 继续在后半区间进行查找 return 0; / 顺序表中不存在待查元素 / 按顺序对ST的每个元素调用函数Visit()一次且仅一次。int Traverse(SSTable ST,void(*Visit)(ElemType) ElemType *p; p = +ST.elem; / p指向第一个元素,第0个元素没有用 = ST.length; V

12、isit( *p+ );void print(ElemType c) / Traverse()调用的函数 (%d %d) , c.key, c.others);int main() SSTable st; KeyType s; Creat_Ord(&st, N); / 由全局数组产生非降序静态查找表st Traverse(st,print); / 顺序输出非降序静态查找表st n请输入待查找值的关键字: , &s); i = Search_Bin(st, s); / 折半查找有序表 if( i ) print(st.elemi);没找到.n Destroy(&st);pause输出效果:(5

13、1) (13 2) (19 3) (21 4) (37 5) (56 6) (64 7) (75 8) (80 9) (88 10) (92 11)请输入待查找值的关键字: 75(75 8) 请按任意键继续. . . 图书信息#define LEN sizeof(struct student) #define FORMAT %d %s %d %d %d %d %d %dn#define DATA stui.num,stui.name,stui.math,stui.lisan,stui.xiandai,stui.english,stui.wuli,stui.sumvoid input ();vo

14、id show ();void search ();void del ();void modify ();void menu ();void gaoshu ();void lisan ();void xiandai ();void yingyu ();void daxuewuli ();void total (); char name20; int num; int math; int lisan; int xiandai; int english; int wuli; int sum;struct student stu100;void input () int m=0,i=0,b; cha

15、r ch; FILE *fp; if(fp=fopen(f:data.txtr)=NULL)无法打开数据n while(!feof(fp) b=fread(&stum,LEN,1,fp); if(b=1) m+; fclose(fp); if(m=0)无数据n原有数据: show();a+是否输入新信息:y/n?ch); while(ch=Y|ch=y)学号:stum.num); for(i=0;m; if(stui.num=stum.num)输入的学号以存在!返回主菜单!姓名 scanf(,stum.name);高等数学成绩:stum.math);离散数学成绩:stum.lisan);线性代

16、数成绩:stum.xiandai);英语成绩:stum.english);大学物理成绩:stum.wuli); stum.sum=stum.math+stum.lisan+stum.xiandai+stum.english+stum.wuli; fwrite(&学号%d保存成功n,stum.num); m+;是否继续输入新信息: y/n?:void show () int i,m=0,b;num name math lisan xiandai english wuli sumtn printf(FORMAT,DATA);void search () int m=0,n,b,i,j=0;无任何学生信息记录n输入要查询的学号:n); if(stui.num=n) printf(FORMAT,DATA); j=1; if(j=0)未查询到该学生的信息n return;是否继续查询学生信息:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1