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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(数据结构作业.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构作业.docx

1、数据结构作业数据结构 班级:计算机科学与技术02班 组长:宋志浩 41009010212小组成员:康维虎41009010211赵兵41009010216许晓飞41009010213刘望41009010215朱元410090102126#include#include#include#define P 30 /*除数余留法中的除数*/#define NULLKEY 0 #define MAX 30 /*人名个数*/#define hashlen 30 /*哈希表长度*/#define Max 20000/最大值为20000#define NUM 10/顶点最大数为10int sum=0,k=0;

2、MGraph G; int PNUMNUM; /定义景点指针long int DNUM; /最短距离int x10=0;void CreateUDN(int v,int a); void ShortestPath(int num);void output(int sight1,int sight2);char Menu(); void search(); char SearchMenu(); void HaMiTonian(int); void NextValue(int); void display();void search() /查询景点信息typedef struct xinxi in

3、t haoma; int code; struct xinxi *next;xinxi;struct nodeint k;a30;/paixutypedef struct Node /*哈希表结构体*/ char key_code10; /*哈希表地址*/ struct Node *next;Node;typedef struct hashtable /*创建哈希表*/ int key; struct Node *next;HashTableMAX;typedef struct ArcCell/弧信息int adj; /权值,顶点距离ArcCell;typedef struct VertexT

4、ype/顶点类型int number; char *sight; /景点名称char *description;/景点介绍VertexType; typedef struct VertexType vexNUM;/顶点向量ArcCell arcsNUMNUM;/数组表示,邻接矩阵int vexnum,arcnum;/图的当前顶点数和弧数MGraph; typedef struct Node char data; struct Node *LChild; struct Node *RChild;BiTNode,*BiTree;typedef struct char *ch; int len;HS

5、tring;/-文本处理器/-paixuint shell(struct node a30,int n) int i,j,t;for(t=n/2;t=1;t=t/2) for(i=t+1;i=n;i+)if(ai.kai-t.k) a0.k=ai.k; for(j=i-t;a0.k0;j=j-t) aj+t.k=aj.k; aj+t.k=a0.k; return 0;/快速排序 int partition(struct node a30,int s1,int s2) int i,j;i=s1;j=s2; a0.k=as1.k;while(ij) while (ij&a0.k=aj.k) j-;

6、 if(ij) ai.k=aj.k;i+;while (ij&ai.k=a0.k) i+; if(ij) aj.k=ai.k; j-;ai.k=a0.k; return i; void quick(struct node a30,int s1,int s2) int m,i,j;if(s1s2)m=partition(a,s1,s2); quick(a,s1,m-1);quick(a,m+1,s2); / for(i=1;i=n;i+)/堆排序 void sift(struct node a30,int p,int m) int i,j,flag,t; flag=ap.k; i=p; j=2*

7、i; t=0; while(j=m&!t) if(jm&aj.k=aj.k) t=1; else ai.k=aj.k; i=j; j=2*i; ai.k=flag; void heap(struct node a30,int n) int i,flag; for(i=n/2;i=1;-i) sift(a,i,n); for(i=n;i=2;-i) flag=a1.k; a1.k=ai.k; ai.k=flag; sift(a,1,i-1); /菜单 void Mune()printf(n);printf(请输入你的选择! n);printf(1:希尔排序! n);printf(2:快速排序!

8、n);printf(3:堆排序! n);printf(4:退出? n); printf(n); int Hash(int key) int mode = key % P; /*除留余数法得到的余数*/ return mode;void Hash_Init(HashTable ht) /*哈希表初始化*/ int i; for(i = 0; i key_code); Node *p; p=(Node*)malloc(sizeof(Node); if(htkey.key = NULLKEY) htkey.key = key; htkey.next = node; k+; else if(htkey

9、.key = key) p = htkey.next; k+; while(p-next!= NULL) p = p-next; k+; p-next = node; k+; return 1;Node* Hash_Search(HashTable ht, int key) /*查找函数*/ int p0 = Hash(key); if(htp0.key = NULLKEY) sum+;return NULL; else if(htp0.key = p0) Node *p = htp0.next; while(p != NULL) if(CharToInt(p-key_code) = key)

10、 sum+; return p; p = p-next; sum+; return NULL;int Hash_Create(HashTable ht) /*哈希表长度*/ int i; Node *node; Hash_Init(ht); printf(请输入姓名:); /*输入30个姓名*/ for(i=0;ikey_code); node-next = NULL; Hash_Insert(ht, node); printf(nCreate Successfully!n); return 1;int hash_output(HashTable h) /*哈希表的输出部分*/ Node *a

11、; int i,j,count2=0; a=(Node*)malloc(sizeof(Node); j=0; for(i=0;i%s,(*a).key_code); a=(*a).next; j+; count2+=j; printf(n); return count2;void Hash_Link() /*链表法构造函数*/ int key; int i; Node *node; HashTable ht; Hash_Create(ht); hash_output( ht); printf(count=%dn,k); /*查找总长度*/ printf(ASL=%d/30n,k); /*平均查

12、找长度*/ printf(请输入要查找的数据:); /*输入查找的姓名*/ scanf(%s,&key); node = Hash_Search(ht, key);printf(查找次数:%dn,sum); if(node != NULL) printf(查找成功!); else printf(查找不成功!); void hash_create(int h,int status,int data) int address; int di; address=data%P; if(statusaddress=0) haddress=data; statusaddress=1; else for(d

13、i=1;di=hashlen-1;di+) address=(data%P)+di)%hashlen; if(statusaddress=0) haddress=data; statusaddress=1; break; return ;int hash_search(int h,int key) int address, di; address=key % P; if(haddress=key) /*哈希表中元素与查找元素是否相等*/ return 1; else for(di=1;di=hashlen) return 0;char Menu() char c;int flag;doflag

14、=1;system(cls);printf(*n);printf( 1、查询景点路径 n);printf( 2、查询景点信息 n);printf( 3、推荐参观路线 n);printf( 4、退出 n);printf(*n);printf(请输入您的选择:);scanf(%c,&c);if(c=1|c=2|c=3|c=4)flag=0;while(flag); return c;char SearchMenu() /查询景点路径char c;int flag;doflag=1;system(cls);printf(*n);printf( 1、按照景点编号查询 n);printf( 2、按照景点

15、名称查询 n);printf( 3、返回 n);printf(*n);printf(请输入您的选择:);scanf(%c,&c);if(c=1|c=2|c=3)flag=0;while(flag); return c;void search() /查询景点信息int num;int i;char c;char name20; dosystem(cls);c=SearchMenu();switch (c)case 1: system(cls);printf(请输入您要查找的景点编号:);scanf(%d,&num);for(i=0;iNUM;i+)if(num=G.vexi.number)pri

16、ntf(您要查找景点信息如下:);printf(%-25sn,G.vexi.description);printf(按ENTER返回);getchar();getchar();break;if(i=NUM)printf(没有找到!);printf(按ENTER返回);getchar();getchar(); break;case 2:system(cls);printf(请输入您要查找的景点名称:);scanf(%s,name);for(i=0;iNUM;i+)if(!strcmp(name,G.vexi.sight)printf(您要查找景点信息如下:);printf(%-25sn,G.ve

17、xi.description);printf(按ENTER返回);getchar();getchar();break;if(i=NUM)printf(没有找到!);printf(按ENTER返回);getchar();getchar();break;while(c!=3);void CreateUDN(int v,int a)/采用数组表示法,构造无向图Gint i,j;G.vexnum=v; /初始化图的顶点数和边数G.arcnum=a;for(i=0;iG.vexnum;+i) G.vexi.number=i;/初始化每一个顶点的编号G.vex0.sight=大门;G.vex0.descr

18、iption=校园出入的正门。;G.vex1.sight=图书馆;G.vex1.description=阅览,借阅图书。;G.vex2.sight=教学楼;G.vex2.description=学生上课的地方;G.vex3.sight=食堂一;G.vex3.description=吃饭的地方;G.vex4.sight=大学生活动中心;G.vex4.description=日常庆典活动,社团演出;G.vex5.sight=游泳馆;G.vex5.description=游泳;G.vex6.sight=体育场;G.vex6.description=土操场;G.vex7.sight=2宿舍;G.vex

19、7.description=学生日常生活起居地;G.vex8.sight=食堂三;G.vex8.description=民族餐厅;G.vex9.sight=运动场地;G.vex9.description=篮球、排球、足球场地; for(i=0;iG.vexnum;+i)for(j=0;jG.vexnum;+j)/初始化邻接矩阵G.arcsij.adj=Max;G.arcs01.adj=G.arcs10.adj=20;G.arcs12.adj=G.arcs21.adj=24;G.arcs13.adj=G.arcs31.adj=26;G.arcs14.adj=G.arcs41.adj=16;G.a

20、rcs15.adj=G.arcs51.adj=50;G.arcs27.adj=G.arcs72.adj=1000;G.arcs34.adj=G.arcs43.adj=34;G.arcs36.adj=G.arcs63.adj=10;G.arcs46.adj=G.arcs64.adj=19;G.arcs56.adj=G.arcs65.adj=25;G.arcs57.adj=G.arcs75.adj=500;G.arcs78.adj=G.arcs87.adj=51;G.arcs79.adj=G.arcs97.adj=200;G.arcs89.adj=G.arcs98.adj=100;void Sho

21、rtestPath(int num)/最短路径int v,w,i,t; int finalNUM; /辅助数组int min;for(v=0;vNUM;v+)finalv=0; Dv=G.arcsnumv.adj;/将num到其余顶点的路径长度初始化为权值for(w=0;wNUM;w+)Pvw=0;if(Dv20000) Pvnum=1; Dnum=0; for(i=0;iNUM;+i) /求v到其余顶点的最短路径min=Max; for(w=0;wNUM;+w)if(!finalw) /求下一条最短路径 if(Dwmin) v=w;min=Dw; for(w=0;wNUM;+w) if(!f

22、inalw&(min+G.arcsvw.adj)Dw)Dw=min+G.arcsvw.adj;for(t=0;tNUM;t+)Pwt=Pvt;void output(int sight1,int sight2) /输出界面int a,b,c,d,q=0;a=sight2; if(a!=sight1) printf(从%s到%s的最短路径是,G.vexsight1.sight,G.vexsight2.sight);printf(最短距离为 %dm.,Da); printf(%s,G.vexsight1.sight); d=sight1; for(c=0;cNUM;+c)gate:; Pasight1=0;for(b=0;bNUM;b+)if(G.arcsdb.adj%s,G.vexb.sight); q=q+1; Pab=0;d=b; if(q%8=0) printf(n);goto gate;void HaMiTonian(int m) /用来求推荐路线if(m9) return; L: NextValue(m); if(xm=0) return; if(m=7&G.arcs0x9-1.adj!=20000)

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

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