数据结构课程设计(数据结构课程设计的图书目录)

2024-04-05 11:40:25 :24

数据结构课程设计(数据结构课程设计的图书目录)

本文目录

数据结构课程设计的图书目录

第1章 数据结构课程设计概述1.1 数据结构简介1.2 课程设计目标和特点1.3 编写说明1.4 课程设计实例的标准格式第2章 线性表的应用2.1 存储结构与基本运算的算法2.2 集合的交、并运算2.3 学生成绩管理2.4 多项式求导2.5 约瑟夫环问题2.6 数据库管理系统第3章 栈的应用3.1 存储结构与基本运算的算法3.2 括号匹配3.3 汉诺塔问题3.4 算术表达式求值3.5 马踏棋盘第4章 队列的应用4.1 存储结构与基本运算的算法4.2 看病排队候诊问题4.3 数制的转换4.4 停车场管理4.5 基数排序第5章 串的应用5.1 存储结构与基本运算的算法5.2 KMP算法5.3 最长公共子串5.4 大整数计算器第6章 多维数组和广义表的应用6.1 存储结构与基本运算的算法6.2 魔方阵6.3 稀疏矩阵的加法运算6.4 本科生导师制问题第7章 树状结构的应用7.1 存储结构与基本运算的算法7.2 线索二叉树的创建与遍历7.3 由遍历确定二叉树7.4 电文的编码和译码7.5 家族关系查询系统第8章 图状结构的应用8.1 存储结构与基本运算的算法8.2 地铁建设问题8.3 安排教学计划8.4 校园导航附录A 课程设计实例软件包参考文献

数据结构课程设计是什么

.需求分析1.运行环境硬件:计算机486/64M以上操作系统: WIN9x 以上/WIN2000/WIN XP/WIN ME相关软件:vistualC++2.程序所实现的功能:(1)建立并显示图的邻接表。(2)深度优先遍历,显示遍历结果。(3)对该图进行拓扑排序,显示排序结果。(4)给出某一确定顶点到所有其它顶点的最短路径。3.程序的输入,包含输入的数据格式和说明(1)输入顶点数,及各顶点信息(数据格式为整形)(2)输入边数,及权值(数据格式为整形)4.程序的输出,程序输出的形式(1)输出图的邻接表、深度优先遍历结果、拓扑排序结果。(2)输入某一确定顶点到其它所有顶点的最短路径。5.测试数据二、设计说明1、 算法设计的思想建立图类,建立相关成员函数。最后在主函数中实现。具体成员函数的实现请参看源程序。   2、 主要的数据结构设计说明图邻接矩阵、邻接表的建立。图的深度优先遍历、拓扑排序、顶点之间的最短路径。3、 程序的主要模板template 《class Type》 class Graph4、 程序的主要函数 Graph、link()、DFTraverse()、TopologicalOrder()、TopologicalOrder()、GetVertexPos()、ShortestPath三、上机结果及体会1、 实际完成的情况说明主要程序参考教材《数据结构——C++版》。2、 程序的性能分析可连续建图 3、 上机过程中出现的问题及其解决方案。编译没有错误,但结果有问题。解决方案:虽然程序的编译通过,只能说明语法上没有问题,结果只所以不正确是因为算法上原因。4、 程序中可以改进的地方说明程序中的深度优先遍历,浪费空间较大,可以考虑用循环来做。但这样将付出代码长度度加长的代价。5、 程序中可以扩充的功能及设计实现假想实现假想:随用户的输入可以随时动态的显示图的生成。6、 收获及体会编写程序即是一件艰苦的工作,又是一件愉快的事情。最大的收获:编程时如果遇到看似简单但又无法解决的问题,很容易灰心丧气。此时切不可烦躁,一定要冷静的思考,认真的分析。要勇敢的面对问题,勇敢的接受问题,勇敢的处理问题,最后最勇敢的解决问题。四、参考文献数据结构(C++版) 叶核亚 主编 机械工业出版社数据结构经典算法实现与习题解答 汪杰 编著 人民邮电出版社数据结构课程设计 苏仕华 编著 机械工业出版社数据结构程序设计题典 李春葆 编著 清华大学出版社数据结构课程与题解(用C/C++描述) 胡圣荣 编著 北京大学出版社 char op //程序控制变量

数据结构课程设计-客户消费积分管理系统

用win-tc可运行、、、、、1. 设计目的数据结构课程设计的目的是,通过设计掌握数据结构课程中学到的基本理论和算法并综合运用于解决实际问题中,它是理论与实践相结合的重要过程。设计要求学会如何对实际问题定义相关数据结构,并采用恰当的设计方法和算法解决问题,同时训练学生进行复杂程序设计的技能和培养良好的程序设计习惯。2. 设计内容和要求问题描述:针对客户的消费情况,进行客户管理,根据客户的消费积分对客户实行不同程度的打折优惠。基本要求:1.采用一定的存储结构进行客户信息的存储;2.对客户的信息可以进行修改、删除、添加;3.能够根据消费情况进行客户积分的计算;4.根据积分情况实行不同程度的打折优惠。3.本设计所采用的数据结构本系统用到的主要数据结构为数组和文件。一个数组对应一个客户,里面用3个字符串分别存储着用户的客户号、姓名和消费情况。然后将数组写入文件,查询时读取文件,提取相应信息。4.功能模块详细设计4.1 详细设计思想在数组中定义3个字符串gukehao、xingming、xiaofei,分别存储客户的顾客号、姓名、消费额。通过录入函数对3个字符串循环进行赋值,然后根据消费额使用if语句判断其折扣区间,复制完毕后存入文件s_score.txt。修改函数首先按照用户输入的客户号找到相应存储文件,然后输出相应信息供客户阅览,最后提供修改命令,修改完毕后删除原文件,用新文件替代原文件。查找函数首先读取文件,然后根据用户输入客户号找到相应文件输出客户信息(顾客号、姓名、消费额、积分、折扣)。删除函数根据用户输入客户号找到相应文件进行删除。主函数为用户界面,1-4分别对应录入、修改、查找、删除函数,5为退出。 4.2 源代码#include "stdio.h"#include "stdlib.h"#include "string.h"#include "conio.h"#include "mem.h"#include "ctype.h"#include "alloc.h"struct score{ char gukehao; /*定义3个存储客户信息的字符串*/ char mingzi; float score;}data,info; /*定义数组*/ int i,j,k=0; float n; /*n为折扣值*/ char temp,ch; FILE *fp,*fp1;void luru(){ if((fp=fopen("s_score.txt","ab+"))==NULL) { printf("cannot open this file.\n"); getch();exit(0); } for(i=0;i》=0;i++) /*无限循环知道用户选择停止*/ { printf("Please input gukehao:"); gets(data.gukehao); printf("please input mingzi:"); gets(data.mingzi); printf("Please input xiaofei:"); gets(temp);data.score=atof(temp); /*不能直接赋值,采用转换函数*/ if(data.score《=5000) /*判断折扣区间*/ n=1; else if(data.score》5000) n=0.95; else n=0.9; fwrite(&data,sizeof(data),1,fp); /*写入文件*/ printf("another?(input n to main/anykey to continue)\n"); /*循环停止判断*/ ch=getch(); if(ch==’n’||ch==’N’) break; } fclose(fp);}void xiugai(){ if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL) { printf("Cannot open this file.\n"); exit(0); } printf("\nPlease input shuru xiugai gukehao:"); scanf("%d",&i); getchar(); while((fread(&data,sizeof(data),1,fp))==1) /*读取文件*/ { j=atoi(data.gukehao); if(j==i) /*根据输入数值确定客户号*/ { printf("gukehao:%s\nmingzi:%s\n",data.gukehao,data.mingzi); printf("Please input mingzi:"); gets(data.mingzi); printf("Please input xiaofei:"); gets(temp);data.score=atof(temp);} fwrite(&data,sizeof(data),1,fp1); } fseek(fp,0L,0); /*0位移*/ fseek(fp1,0L,0); while((fread(&data,sizeof(data),1,fp1))==1) { fwrite(&data,sizeof(data),1,fp); /*取代原文件*/ } fclose(fp); fclose(fp1);}void chazhao(){ if((fp=fopen("s_score.txt","rb"))==NULL) { printf("\nCannot open this file.\n"); exit(0); } printf("\nPlease input gukehao chakan:"); scanf("%d",&i); while(fread(&data,sizeof(data),1,fp)==1) { j=atoi(data.gukehao); if(i==j) { printf("gukehao:%s\nmingzi:%s\nxiaofei:%f\njifen:%f\nzhekou:%f\n",data.gukehao,data.mingzi,data.score,n); } }getch();}void shanchu(){if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL) { printf("\nopen score.txt was failed!"); getch(); exit(0); } printf("\nPlease input gukehao which you want to del:"); scanf("%d",&i);getchar(); while((fread(&data,sizeof(data),1,fp))==1) { j=atoi(data.gukehao); if(j==i) { printf("Anykey will delet it.\n"); getch(); continue; } fwrite(&data,sizeof(data),1,fp1); } fclose(fp); fclose(fp1); remove("s_score.txt"); /*删除文件*/ rename("temp.txt","s_score.txt"); printf("Data delet was succesful!\n"); printf("Anykey will return to main."); getch();}main(){while(1){ clrscr(); /*清屏*/ printf("*=====================================================* \n"); printf("* 1》luru 2》xiugai * \n"); printf("* 3》shanchu 4》chazhao * \n"); printf("* 5》exit * \n"); printf("* * \n"); printf("* -----------------------------------------------------------------------------------------* \n"); printf(" Please input which you want(1-5):\n"); ch=getch(); switch(ch) { case ’1’:luru();break; case ’2’:xiugai(); break; case ’3’:shanchu(); break; case ’4’:chazhao(); break; case ’5’:exit(0); default: continue; }}}5.结论 通过对系统的设计,发现文件相对于其他数据结构更便于修改和删除。

求一数据结构课程设计心得体会

数据库课程设计大赛的尘嚣渐渐远去,怀着对这次大赛的些许不舍,怀着对当初课程设计开始时候的豪情万丈的决心的留恋,怀着通过这次课程设计积累的信心与斗志,我开始写这篇文章,为自己的足迹留下哪怕是微不足道但是对自己弥足珍贵的痕迹并期望与大家共勉。首先,让我的记忆追溯到大二暑假,在老大的指引下(老大劝我学asp.net),我接触到Microsoft 公司的.NET产品。那个时候我已经学过vc和asp,因为windows程序设计实验的课的关系,接触过vb,但是没有专门去学他,因为习惯了c++里面的class,int,觉得vb的sub,var 看着就不是很顺心。我是一个好奇心很强的人,突然看到了一个号称“.net是用于创建下一代应用程序的理想而又现实的开发工具”,而且主推c#语言,由于对c语言的一贯好感,我几乎是立刻对他产生了兴趣。我就开始了对c#的学习,任何语言都不是孤立存在的,所以数据交互是很重要的,暑假的时候我把我们这学期的课本数据库系统概论看了一遍。我记得以前用c语言编程的时候,数据是在内存中申请空间,譬如使用数组等等。很耗费内存空间。这个时候就是数据库站出来的时候啦,于是我又装上了sql server2000,以前学asp的时候用的是access,那个时候只是照着人家做,理论是什么也不是很清楚。通过一个暑假的学习,基本搞清楚了理论方面的东西,具体怎么用也不是很清楚。但是这为这学期的课程设计打下了铺垫。来到学校后,随着这学期的数据库课程大赛开始了,我有一个看法就是我自己应该具备的能力不是我会多少,而是我应该具备快速学会东西的能力。遇到什么就学什么。我们有时候很容易被一些专业名词说吓着,包括什么建模,软件工程,数据分析,数据挖掘等等。我身边就有很多同学被这些纸老虎所唬住,而没有勇气去接触他们,总是说这个太难了之类的退堂鼓的话,他们低估了自己的潜力同时也压抑住了他们自己的好奇心。其实都是纸老虎,又不是什么国家科研难题,只是去用一些工具,发明工具是很难,但是用一个工具就容易多了,just do it!我记得我做这个数据库之前,我们老师说要做好前期分析,我就在网上搜索用什么分析工具好。最后我选择了roseUML建模工具。在此之前,我脑袋里面没有软件建模的思想,什么UML建模对我而言就是一张空白的纸。但是真正接触后并没有想象的那么难,有什么不懂的上网去搜索,这是一个信息横流的世界,有google,baidu就没有不能解决的知识难题。以及后来的数据库分析的时候用到的powerdesigner也是一样。 开发的时候我想过用什么架构,c/s模式?模式有很多,怎么选择?我就上网搜索现在最流行的架构是什么。结果搜到了MVC架构,就是你啦。我决定用这个架构,不会,没关系,咱学。Just do it!前期工作准备好后,那么我就得把我暑假学的.net加以实践。这个时候我更加深入的了解了利用ado.Net操纵数据库的知识。并且对数据库里面的存储过程有了比较深入的了解。经过大概2个多星期的奋斗,我完成了我的数据库课程设计--基于.net数据集的图书馆管理系统。并最后非常荣幸的获得了大赛的一等奖以及以及新技术应用奖。 与其临渊羡鱼,不如退而结网。这次数据库课程设计给我的最大的印象就是如果自己有了兴趣,就动手去做,困难在你的勇气和毅力下是抬不了头的。从做这个数据库开始无论遇到什么困难,我都没有一丝的放弃的念头。出于对知识的渴望,出于对新技术的好奇,出于对一切未知的求知。我完成了这次数据库课程设计,不过这只是我学习路上的驿站,未来十年.NET的核心技术就是XML,我会继续学习它,包括jave公司的j2ee我也很想试试,语言本来就是相通的,just do it!语言并不重要毕竟它仅仅是工具,用好一个工具并不是一件值得为外人道的事情,主要是了解学习思想。古语说的好:学无止境啊! 我很庆幸我参加了这次数据库大赛,让我确实打开了眼界。

数据结构课程设计

《数据结构课程设计》列举了数据结构课程设计实例,通过综合训练,能够培养学生实际分析问题、解决问题、编程和动手操作等多方面的能力,最终目的是帮助学生系统地掌握该门课程的基本内容,并运用所学的数据结构知识去解决实际问题。全书共8章,内容包括数据库课程设计概述、线性表、栈、队列、串、多维数组和广义表、树状结构、图状结构等问题的应用。《数据结构课程设计》是一本独立于具体的数据结构教材的课程设计辅导书,通过针对每种数据结构的具体实例,循序渐进地启发学生完成设计。书中给出的实例都是完整可运行的,同时给出了测试样例、总结与思考等,是一本很好的教学辅导参考书。《数据结构课程设计》可作为高等院校计算机专业及相关专业教材或参考书,也可供从事软件开发工作和计算机编程爱好者参考。

数据结构课程设计的需求分析怎么写

  一 需求分析:  在该部分中根据设计题目的要求,充分地分析和理解问题,叙述系统的功能要求,明确问题要求做什么?以及限制条件是什么?  1.1问题描述  1.2基本要求  (1) 输入的形式和输入值的范围;  (2) 输出的形式;  (3) 程序所能达到的功能;  二 概要设计  说明本程序中用到的所有抽象数据类型的定义。主程序的流程以及各程序模块之间的层次(调用)关系。  1、 数据结构  2、 程序模块  3、各模块之间的调用关系以及算法设计  三 详细设计  实现概要设计中定义的所有数据类型,对每个操作写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);写出出函数和过程的调用关系.  四 测试与分析  测试数据,输出测试的结果,这里的测试数据应该完整和严格。并对结果进行分析。  五 总结  总结可以包括 : 课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容。 

数据结构课程设计的目的和意义

1、目的:通过实践,让学生加深对数据结构知识的理解,提高计算机算法设计能力,锻炼学生的综合能力,掌握程序的实际开发流程,以提高算法解决问题的能力,增强算法设计的自觉性和把握算法实施操作的能力。2、意义:帮助学生更深地理解数据结构的知识内容,使他们能够实践运用和掌握程序开发实际流程,以及分析、设计、实现、测试和维护计算机程序等技能。有助于帮助学生加深对算法设计思想及其在计算机程序中的实际应用。

急!!!!!数据结构课程设计

#include 《iostream.h》#include 《malloc.h》#include 《stdlib.h》#define MAX_VERTEX_NUM 30 //最大顶点数#define INFINITY 10000000 //无穷大typedef struct ArcCell{ int adj;}ArcCell,AdjMatrix;typedef struct{ char vexs; AdjMatrix arcs; int vexnum,arcnum;}MGraph;//查询顶点位置int LocateVex(MGraph G,char v){ int i=0; while(G.vexs!=v&&i《G.vexnum) i++; return i;}//创建图的邻接矩阵MGraph CreateMGraph(){ MGraph G; int i,j,k; int w; char v1,v2; cout《《"请输入图的顶点数:"; cin》》G.vexnum; cout《《"请输入图的弧数:"; cin》》G.arcnum; for(i=0;i《G.vexnum;i++){ cout《《"请输入第"《《i+1《《"个顶点:"; cin》》G.vexs; } for(i=0;i《G.vexnum;i++) for(j=0;j《G.vexnum;j++) G.arcs.adj=INFINITY; for(k=0;k《G.arcnum;k++){ cout《《"请输入弧"《《k+1《《"所关联的顶点和权值:"; cin》》v1》》v2》》w; if(LocateVex(G,v1)《G.vexnum) i=LocateVex(G,v1); else{ cout《《"没有找到此顶点!"《《endl; k--; continue; } if(LocateVex(G,v2)《G.vexnum) j=LocateVex(G,v2); else{ cout《《"没有找到此顶点!"《《endl; k--; continue; } G.arcs.adj=w; G.arcs; } cout《《"MGraph创建成功!"《《endl; return G;}//……………………输出MGraph…………………void PrintMGraph(MGraph G){ cout《《"图的邻接矩阵"《《endl; int i,j; for(i=0;i《G.vexnum;i++) cout《《" "《《G.vexs; cout《《endl; for( i=0;i《G.vexnum;i++){ cout《《G.vexs《《" "; for( j=0;j《G.vexnum;j++){ if(G.arcs.adj!=INFINITY) cout《《G.arcs.adj《《" "; else cout《《"∞"《《" "; } cout《《endl; } cout《《"--------------------------------------------"《《endl;}//……………………求各个顶点的度…………………void Vdu(MGraph G){ //求各个顶点的度 int i,j; int V; for(i=0;i《G.vexnum;i++){ int count=0; for(j=0;j《G.vexnum;j++) if(G.arcs.adj!=INFINITY) count++; V=count; } for(i=0;i《G.vexnum;i++) cout《《endl《《"第"《《i+1《《"个顶点"《《G.vexs《《endl;}//……………………插入顶点…………………void InsertVex(MGraph &G){ char v; int i,j; cout《《"请输入你想插入的顶点:"; cin》》v; i=G.vexnum++; G.vexs=v; for(j=0;j《G.vexnum;j++) G.arcs.adj=INFINITY; j=G.vexnum-1; for(i=0;i《G.vexnum;i++) G.arcs.adj=INFINITY; cout《《endl《《"插入成功!"《《endl;}//……………………插入弧…………………void InsertArc(MGraph &G){ char v1,v2; int i,j,w; cout《《"请输入你要插入的弧所关联的顶点和权值:"; cin》》v1》》v2》》w; if(LocateVex(G,v1)《G.vexnum&&LocateVex(G,v2)《G.vexnum){ i=LocateVex(G,v1); j=LocateVex(G,v2); G.arcs.adj=w; G.arcs; cout《《endl《《"插入成功!"《《endl; }else{ cout《《"没有找到关联的顶点!"《《endl; }}//……………………删除顶点…………………void DeleteVex(MGraph &G){ int i,j; char v; cout《《"请输入你所要删除的顶点:"; cin》》v; if(LocateVex(G,v)《G.vexnum){ int l=LocateVex(G,v); for(i=l;i《G.vexnum-1;i++) G.vexs; for(i=l;i《G.vexnum-1;i++) for(j=0;j《G.vexnum;j++) G.arcs; for(i=0;i《G.vexnum;i++) for(j=l;j《G.vexnum-1;j++) G.arcs; G.vexnum--; cout《《"已成功删除此顶点!"《《endl; }else cout《《"没有此顶点!"《《endl;}//……………………删除弧…………………void DeleteArc(MGraph &G){ int i,j; char v1,v2; cout《《"请输入你要删除的弧所关联的顶点"; cin》》v1》》v2; if(LocateVex(G,v1)《G.vexnum&&LocateVex(G,v2)《G.vexnum){ i=LocateVex(G,v1); j=LocateVex(G,v2); G.arcs.adj=INFINITY; G.arcs; cout《《"已成功删除此弧!"《《endl; }else cout《《"没有找到此弧所关联的顶点!"《《endl;}typedef struct ArcNode{ int adjvex; struct ArcNode *nextarc;}ArcNode;typedef struct vnode{ char data; ArcNode *firstarc;}vnode,adjlist;typedef struct { adjlist vertices; int vexnum,arcnum;}ALGraph;//……………………创建图的邻接表…………………ALGraph CreateUDG(MGraph G){ ALGraph gra; int i,j; ArcNode *arc,*tem,*p; for(i=0;i《G.vexnum;i++){ gra.vertices; gra.vertices.firstarc=NULL; } for(i=0;i《G.vexnum;i++){ for(j=0;j《G.vexnum;j++){ if(gra.vertices.firstarc==NULL){ if(G.arcs.adj!=INFINITY){ arc=(ArcNode*)malloc(sizeof(ArcNode)); arc-》adjvex=j; gra.vertices.firstarc=arc; arc-》nextarc=NULL; p=arc; j++; while(G.arcs.adj!=INFINITY&&j《G.vexnum){ tem=(ArcNode*)malloc(sizeof(ArcNode)); tem-》adjvex=j; gra.vertices.firstarc=tem; tem-》nextarc=arc; arc=tem; j++; } } }else{ if(G.arcs.adj!=INFINITY){ arc=(ArcNode*)malloc(sizeof(ArcNode)); arc-》adjvex=j; p-》nextarc=arc; arc-》nextarc=NULL; p=arc; } } } } gra.vexnum=G.vexnum; gra.arcnum=G.arcnum; cout《《"ALGraph创建成功!"《《endl; return gra;}//……………………输出ALGraph…………………void PrintUDG(ALGraph gra){ int i; ArcNode *p; cout《《"图的各顶点为:"《《endl; for(i=0;i《gra.vexnum;i++) cout《《gra.vertices.data《《" "; cout《《endl; cout《《"图的邻接表为:"《《endl; for(i=0;i《gra.vexnum;i++){ cout《《i《《" "《《gra.vertices.data; p=gra.vertices.firstarc; while(p){ cout《《"-》"《《p-》adjvex; p=p-》nextarc; } cout《《endl; }}//……定义全局变量……int visited;int we;//……求第一个邻接点……int firstadjvex(ALGraph gra,vnode v){ if(v.firstarc!=NULL) return v.firstarc-》adjvex; else return -1;}//……求相对于w的下一个邻接点int nextadjvex(ALGraph gra,vnode v,int w){ ArcNode *p; p=v.firstarc; while(p!=NULL&&p-》adjvex!=w){ p=p-》nextarc; } if(p-》adjvex==w&&p-》nextarc!=NULL){ p=p-》nextarc; return p-》adjvex; }else return -1;}//……………………图的深度优先遍历…………………void DFS(ALGraph gra,int i){ visited=1; int we1; cout《《gra.vertices.data《《" "; for(we=firstadjvex(gra,gra.vertices,we)){ we1=we; if(visited==0) DFS(gra,we); we=we1; }}void DFSTravers(ALGraph gra){ int i; for(i=0;i《gra.vexnum;i++){ visited=0; } for(i=0;i《gra.vexnum;i++){ if(visited==0) DFS(gra,i); } cout《《endl;}//…………………………………………………………………//……………………队列定义和基本操作……………………typedef struct qnode{ int data; struct qnode *next;}qnode,*queueptr;typedef struct{ queueptr front; queueptr rear;}linkqueue; //……初始化队列………void initqueue(linkqueue &q){ q.rear=(queueptr)malloc(sizeof(qnode)); q.front=q.rear; q.front-》next=NULL;} //……入队列………int enqueue(linkqueue &q,int e){ queueptr p; p=(queueptr)malloc(sizeof(qnode)); //系统生成qnode节点并赋予p if(!p) return 0; else{ p-》data=e; p-》next=NULL; q.rear-》next=p; q.rear=p; return 1; } } //……出队列……int dequeue(linkqueue &q,int &e){ queueptr p; if(q.front==q.rear) return 0; p=q.front-》next; e=p-》data; q.front-》next=p-》next; if(q.rear==p) q.rear=q.front; free(p); return 1;} //……判断队列是否为空……int queueempty(linkqueue q){ if(q.front==q.rear) return 1; return 0;}//………………………………………………………………………//……………………图的广度优先遍历…………………void BFSTravers(ALGraph gra){ int i,e; linkqueue q; for(i=0;i《gra.vexnum;i++) visited=0; initqueue(q); //附设队列存储已经被访问的路径长度为1 2...的顶点 for(i=0;i《gra.vexnum;i++) if(!visited){ visited=1; cout《《gra.vertices.data《《" "; enqueue(q,i); while(!queueempty(q)){ dequeue(q,e); for(we=firstadjvex(gra,gra.vertices,we)){ if(!visited){ visited=1; cout《《gra.vertices.data《《" "; enqueue(q,we); } } } } cout《《endl;}//……………………求图的连通分支…………………void DFSTraversFL(ALGraph gra){ int i,count=1; for(i=0;i《gra.vexnum;i++){ visited=0; } for(i=0;i《gra.vexnum;i++){ if(visited==0){ cout《《"第"《《count《《"个连通分支为:"; DFS(gra,i); //对连通图,只需从一个顶点出发深度优先遍历即可访问所有顶点 cout《《endl; count++; } }}//……………………用普里姆算法求最小生成树…………………void PRIM(ALGraph gra,int g,int n){ int lowcost; int i,j,k,min; for(i=2;i《=n;i++){ lowcost; prevex=1; } lowcost=0; for(i=2;i《=n;i++){ min=INFINITY; k=0; for(j=2;j《=n;j++) if(lowcost!=0){ min=lowcost; k=j; } cout《《gra.vertices.data《《" "《《min; lowcost=0; for(j=2;j《=n;j++) if(g){ lowcost; prevex=k; } cout《《endl; }}//…………求最短路径…………void ShortPath(MGraph G,char ch){ //迪杰斯特拉算法实现,某点到其余各点 int i,j,min,k,t,w; int v=0; int final; int lowcost; int q; k=LocateVex(G,ch); for(i=0;i《G.vexnum;i++){ final=0; lowcost.adj; for(j=0;j《G.vexnum;j++) q=0; if(lowcost《INFINITY){ q=1; q=1; } } lowcost=0; final=1; for(i=0;i《G.vexnum;i++){ min=INFINITY; for(j=0;j《G.vexnum;j++) if(!final) if(lowcost《min){ min=lowcost; v=j; } final=1; for(w=0;w《G.vexnum;w++) if(!final)){ lowcost.adj; for(t=0;t《G.vexnum;t++) q; q=1; } } for(i=0;i《G.vexnum;i++){ if(i!=k){ cout《《ch《《" to "《《G.vexs《《endl; cout《《"最短路径:"; if(lowcost《INFINITY){ for(j=0;j《G.vexnum;j++) if(q&&j!=i) cout《《G.vexs《《" "; cout《《G.vexs; cout《《"长度:"《《lowcost《《endl; }else cout《《"不存在!"《《endl; } }}typedef struct CSNode{ char data; struct CSNode *firstchild,*nextsibling; }CSNode,*CSTree;//……………………深度优先生成树…………………void DFSTree(ALGraph gra,int v,CSTree &T){ //深度优先搜索后顺序输出 visited=1; int w,first=1; CSTree p,q; for(w=firstadjvex(gra,gra.vertices,w)) if(!visited){ p=(CSTree)malloc(sizeof(CSNode)); p-》data=gra.vertices.data; p-》firstchild=NULL; p-》nextsibling=NULL; if(first){ T-》firstchild=p; first=0; }else q-》nextsibling=p; q=p; DFSTree(gra,w,q); }}void DFSForest(ALGraph gra,CSTree &T){ T=NULL; CSTree p,q; int v; for(v=0;v《gra.vexnum;v++) visited=0; for(v=0;v《gra.vexnum;v++) if(!visited){ p=(CSTree)malloc(sizeof(CSNode)); p-》data=gra.vertices.data; p-》firstchild=NULL; p-》nextsibling=NULL; if(!T) T=p; else q-》nextsibling=p; q=p; DFSTree(gra,v,p); }}//……………………先序遍历深度优先生成树…………………void Preorder(CSTree T){ if(T){ cout《《T-》data《《" "; Preorder(T-》firstchild); Preorder(T-》nextsibling); } cout《《endl;}//……………………求u到v之间的最短路径…………………void shortestdistance(MGraph G){ int i,u,v,w,S,E; char start,end; int Distance; cout《《"请输入两个顶点:"; cin》》start》》end; while(LocateVex(G,start)》=G.vexnum||LocateVex(G,end)》=G.vexnum){ cout《《"没有找到关联的顶点!请重新输入:"; cin》》start》》end; } for(i=0;i《G.vexnum;i++) G.arcs.adj=0; for(u=0;u《G.vexnum;u++) for(v=0;v《G.vexnum;v++) Distance.adj; for(u=0;u《G.vexnum;u++) for(v=0;v《G.vexnum;v++) for(w=0;w《G.vexnum;w++) if(Distance) Distance; S=LocateVex(G,start); E=LocateVex(G,end); if(Distance==INFINITY) cout《《start《《"到"《《end《《"的最短路径不存在!"《《endl; else cout《《start《《"到"《《end《《"的最短路径为:"《《Distance《《endl;}//……………………求所有顶点之间的最短路径…………………void shortdistance(MGraph G){ //弗洛依德算法实现,任意两顶点 int i,j,u,v,w; int D; for(i=0;i《G.vexnum;i++) G.arcs.adj=0; for(u=0;u《G.vexnum;u++) for(v=0;v《G.vexnum;v++) D.adj; for(u=0;u《G.vexnum;u++) for(v=0;v《G.vexnum;v++) for(w=0;w《G.vexnum;w++) if(D) D; for(i=0;i《G.vexnum;i++) for(j=0;j《G.vexnum;j++) if(D==INFINITY) cout《《G.vexs《《"的最短路径不存在!"《《endl; else cout《《G.vexs《《endl;}void main(){ int i,j; char ch=’y’; MGraph G; G.vexnum=0; ALGraph gra; gra.vexnum=0; int t; CSTree T=NULL; while(ch==’y’){ cout《《"************************************************************"《《endl; cout《《" MENU"《《endl; cout《《"************************************************************"《《endl; cout《《" "《《"1 |利用邻接矩阵创建图"《《endl; cout《《" "《《"2 |显示图的邻接矩阵"《《endl; cout《《" "《《"3 |求各顶点的度"《《endl; cout《《" "《《"4 |插入顶点"《《endl; cout《《" "《《"5 |插入弧"《《endl; cout《《" "《《"6 |删除顶点"《《endl; cout《《" "《《"7 |删除弧"《《endl; cout《《" "《《"8 |用邻接矩阵创建邻接表UDG"《《endl; cout《《" "《《"9 |显示图的邻接表"《《endl; cout《《" "《《"10 |深度优先便利序列"《《endl; cout《《" "《《"11 |广度优先便利序列"《《endl; cout《《" "《《"12 |图的连通分支"《《endl; cout《《" "《《"13 |求连通图最小生成树"《《endl; cout《《" "《《"14 |求任意顶点到其它顶点的最短路径"《《endl; cout《《" "《《"15 |求图的深度优先生成树"《《endl; cout《《" "《《"16 |对生成树进行先序遍历"《《endl; cout《《" "《《"17 |求两点间的最短路径"《《endl; cout《《" "《《"18 |求所有点之间的最短路径"《《endl; cout《《" "《《"0 |退出!"《《endl; cout《《"***********************************************************"《《endl; cout《《endl《《"请选择你要进行的操作:"; cin》》i; switch(i){ case 1: if(G.vexnum==0) G=CreateMGraph(); else cout《《"MGraph已经创建!"《《endl; break; case 2: if(G.vexnum!=0) PrintMGraph(G); else cout《《"MGraph为空!"《《endl; break; case 3: if(G.vexnum==0) cout《《"请先创建MGraph!"《《endl; else Vdu(G); break; case 4: if(G.vexnum==0) cout《《"请先创建MGraph!"《《endl; else InsertVex(G); break; case 5: if(G.vexnum==0) cout《《"请先创建MGraph!"《《endl; else InsertArc(G); break; case 6: if(G.vexnum==0) cout《《"请先创建MGraph!"《《endl; else DeleteVex(G); break; case 7: if(G.vexnum==0) cout《《"请先创建MGraph!"《《endl; else DeleteArc(G); break; case 8: if(G.vexnum==0) cout《《"请先创建MGraph!"《《endl; else{ gra=CreateUDG(G); } break; case 9: if(gra.vexnum!=0) PrintUDG(gra); else cout《《"UDG为空!"《《endl; break; case 10: if(gra.vexnum!=0){ cout《《"图的深度优先遍历序列为:"; DFSTravers(gra); } else cout《《"请先创建ALGraph!"《《endl; break; case 11: if(gra.vexnum!=0){ cout《《"图的广度优先遍历序列为:"; BFSTravers(gra); } else cout《《"请先创建ALGraph!"《《endl; break; case 12: if(gra.vexnum!=0){ cout《《"图的连通分支如下:"《《endl; DFSTraversFL(gra); } else cout《《"请先创建ALGraph!"《《endl; break; case 13: if(gra.vexnum!=0){ for(i=0;i《G.vexnum;i++) for(j=0;j《G.vexnum;j++) t.adj; cout《《"图的最小生成树为:"《《endl; PRIM(gra,t,G.vexnum); } else cout《《"请先创建ALGraph!"《《endl; break; case 14: if(G.vexnum==0) cout《《"请先创建MGraph!"《《endl; else{ char ch; cout《《"请选择一个顶点:"; cin》》ch; while(LocateVex(G,ch)》=G.vexnum){ cout《《"没有找到此顶点!请重新选择一个顶点:"; cin》》ch; } ShortPath(G,ch); } break; case 15: if(gra.vexnum==0) cout《《"请先创建ALGraph!"《《endl; else DFSForest(gra,T); break; case 16: if(!T) cout《《"请先求深度优先生成树!"《《endl; else{ Preorder(T); cout《《"深度优先生成树已成功创建!"《《endl; } break; case 17: if(G.vexnum==0) cout《《"请先创建MGraph!"《《endl; else shortestdistance(G); break; case 18: if(G.vexnum==0) cout《《"请先创建MGraph!"《《endl; else shortdistance(G); break; case 0: exit(1); default: cout《《"请在0~18之间进行选择!"《《endl; } cout《《"是否继续y/n:"; cin》》ch; system("cls"); }}

数据结构课程设计(学生证管理程序)

晚上找时间给你写出来/*【题目描述】请设计一个学生证的管理程序,该程序应该具有下列功能:(1) 通过键盘输入某位学生的学生证信息。学生证包含的信息请参看自己的学生证;【题目要求】(1) 存储结构采用顺序表或链表;(2) 用本学期所学算法实现各模块;(3) 主函数设计一个菜单,通过菜单进入各模块测试。要求用数据结构(c语言)*/#include 《iostream》#include 《string》using namespace std;struct student{int number;string name;int classno; /*string sex;其他字段不写了*/ student *next;};student * initclass(){ student *head=NULL,*p; int d;do{cin》》d;if(d==0) break;p=new student;p-》number=d;cin》》p-》name》》p-》classno;p-》next=NULL;if(head==NULL) head=p; else { p-》next=head; head=p; }} return head; } //(2) 给定学号,显示某位学生的学生证信息(姓名,学号,学院,班级,专业,入学时间,学制性别);void findstudent(student *head,int d){ student *p; p=head; while(p!=NULL && p-》number!=d) p=p-》next; if(p==NULL) {cout《《"没有这个学生"《《endl; exit(0);} if(p-》number==d) cout《《p-》number《《"\t"《《p-》name《《"\t"《《p-》classno《《endl;}//(3) 给定某个班级的班号,显示该班所有学生的学生证信息;void showclass(student *head,int cno){student *p=head;bool flag=false;while(p!=NULL){if(p-》classno==cno) { flag=true; cout《《p-》number《《"\t"《《p-》name《《"\t"《《p-》classno《《endl; } p=p-》next;}if(!flag) cout《《"没有这个班级的学生\n";}//(4) 给定某位学生的学号,修改该学生的学生证信息; void modify(student *head,int d) { student *p=head; while(p!=NULL && p-》number!=d) p=p-》next; if(p==NULL) { cout《《"没有这个学生"《《endl; exit(0); } if(p-》number==d) { cin》》p-》name》》p-》classno; cout《《p-》number《《"好学生信息更新完成"《《endl; } }//(5) 给定某位学生的学号,删除该学生的学生证信息;student *dropstudent(student *h,int d){student *p,*q;p=h;while(p!=NULL && p-》number!=d) p=p-》next; if(p==NULL) { cout《《"没有这个学生"《《endl; exit(0); } if(p-》number==d) { if(p==h) { h=h-》next; delete p; } else { q=h; while(q-》next!=p) q=q-》next; q-》next=p-》next; delete p; } cout《《d《《"号学生信息删除成功"《《endl; } return h;}(6) 提供一些统计各类信息的功能或排序功能。

数据结构课程设计(数据结构课程设计的图书目录)

本文编辑:admin

更多文章:


忘记歌词歌词 忘记歌词歌曲简介?陈奕迅《忘记歌词》 歌词

忘记歌词歌词 忘记歌词歌曲简介?陈奕迅《忘记歌词》 歌词

本文目录忘记歌词歌词 忘记歌词歌曲简介陈奕迅《忘记歌词》 歌词福麟阁-忘记 的歌词忘记郑润泽歌词一些关于忘记的歌词,,忘记时间 胡歌 歌词周传雄《忘记》这首歌的歌词含义是什么跪求一首歌,歌词你有:我可以忘记时间,忘记过去,忘记省略号后面的忘

2024年8月26日 04:20

武术基本功有哪些动作?武术的基本功到底有那些

武术基本功有哪些动作?武术的基本功到底有那些

本文目录武术基本功有哪些动作武术的基本功到底有那些武术基本功有哪些武术的基本功有哪些武术基本功武术基本功包括武术有哪些基本功武术的基本功武术基本功怎么练习怎么练武术基本功武术基本功有哪些动作武术的基本动作;手形;拳,掌,勾。 手法;冲拳,推

2024年8月27日 20:30

三国演义情节(三国演义主要内容)

三国演义情节(三国演义主要内容)

本文目录三国演义主要内容三国演义中的10个故事情节概括《三国演义》的精彩情节有哪些三国演义有哪些经典的情节三国演义主要内容 《三国演义》是我国最有成就的历史小说,始于黄巾起义,终于西晋统一,展现了公元184年到280年间的历史风云画卷。下面

2024年6月23日 10:30

语文万能作文(初中语文作文万能题材范文)

语文万能作文(初中语文作文万能题材范文)

本文目录初中语文作文万能题材范文高一语文万能作文范文800字语文万能作文素材100字左右中考语文万能作文范文600字600字万能作文语文高中语文作文万能素材精选高考语文万能作文模块 经典开头结尾语文万能作文开头优美句子初中语文作文万能题材范

2024年4月23日 06:20

城市总体规划(城市规划法规辅导之总体规划文本的内容)

城市总体规划(城市规划法规辅导之总体规划文本的内容)

本文目录城市规划法规辅导之总体规划文本的内容城市总体规划和控制性详细规划的区别简述城市总体规划的内容及成果城市总体规划中市域城镇体系规划的内容包括哪些城市总体规划与土地利用总体规划的关系制定城市、镇总体规划的基本程序总体规划内容有哪些城市总

2024年9月30日 08:30

案例分析论文(案例型毕业论文精彩范文)

案例分析论文(案例型毕业论文精彩范文)

本文目录案例型毕业论文精彩范文如何写案例分析论文案例综述论文范文怎样写案例分析论文案例分析论文提纲案例论文怎么写怎么写好供应链管理的案例分析论文毕业论文案例分析法怎么写【蓝田案例分析论文】论文格式范文2000字案例分析类论文范文怎么写案例型

2024年8月30日 21:10

城市居住区规划设计规范(城市居住区规划设计标准)

城市居住区规划设计规范(城市居住区规划设计标准)

本文目录城市居住区规划设计标准城市居住区规划设计规范20212019年最新城市居住区规划设计规范城市居住区规划设计规范《城市居住区规划设计标准》GB50180-2018_GB50180居住区规划设计的基本要求楼间距国家标准城市居住区规划设计

2024年4月10日 02:10

祝福一对新人的简短语句(祝福新人的话简短 祝福新人比较新意的话)

祝福一对新人的简短语句(祝福新人的话简短 祝福新人比较新意的话)

本文目录祝福新人的话简短 祝福新人比较新意的话送给新人的祝福语简短祝福一对新人的短语祝福新人的唯美句子短句祝福新人的话简短暖心祝福一对新人的简短语句祝福一对新人的句子祝福新人的句子简短祝福新人的话简短 祝福新人比较新意的话 结婚的时候,我们

2024年8月27日 05:20

农产品质量安全追溯(农产品安全追溯是什么)

农产品质量安全追溯(农产品安全追溯是什么)

本文目录农产品安全追溯是什么政府现在对农产品追溯这方面很看重,想问问农产品追溯到底有什么好的作用国家农产品质量安全追溯管理平台怎么注册农产品安全追溯是什么说到“农产品及食品质量安全”,永远绕不开的话题就是“溯源”本文将从如下两方面展开谈论农

2024年3月26日 02:40

圆的周长教学设计(什么是周长教学设计)

圆的周长教学设计(什么是周长教学设计)

本文目录什么是周长教学设计小学六年级圆的面积的数学教学设计《圆的认识》教学设计圆的周长教学设计和以往的设计有什么不同什么是周长概念什么是周长教学设计一等奖圆的面积教案穷人教学设计【六年级数学上册《圆的周长》教学设计】《数对圆与统计》教学设计

2024年9月6日 00:00

团圆饭的习俗是什么?吃团圆饭代表什么

团圆饭的习俗是什么?吃团圆饭代表什么

本文目录团圆饭的习俗是什么吃团圆饭代表什么过年吃团圆饭的看图写话怎么写描写吃团圆饭的片段团圆饭作文500字团圆饭的优秀作文团圆饭作文团圆饭的作文难忘的团圆饭作文春节吃团圆饭的作文600字团圆饭的习俗是什么年夜饭(又称团年饭、团圆饭)是指农历

2024年7月21日 06:50

三字经是怎么样记的,我忘记了?择天记小说结局是什么_

三字经是怎么样记的,我忘记了?择天记小说结局是什么_

本文目录三字经是怎么样记的,我忘记了择天记小说结局是什么_九鼎记最新章节,,复制公寓生活记趣三字经是怎么样记的,我忘记了人之初,性本善,性相近,习相远,苟不教,性乃迁,教之道,贵以专,昔孟母,择邻处,子不学,断机杼,窦燕山,有义方,教五子,

2024年9月19日 00:30

办公自动化论文(急求论文资料 题目是:论办公自动化对秘书工作的影响)

办公自动化论文(急求论文资料 题目是:论办公自动化对秘书工作的影响)

本文目录急求论文资料 题目是:论办公自动化对秘书工作的影响自动化专业的论文行政管理与办公自动化这类的毕业论文在哪里找呢机关管理及办公自动化的论文好写么急求一篇有关办公自动化系统方面的英文论文加翻译,字数3000字左右计算机办公自动化公选课的

2024年9月10日 15:20

我爱读书为话题作文10篇?我爱读书作文

我爱读书为话题作文10篇?我爱读书作文

本文目录我爱读书为话题作文10篇我爱读书作文我爱读书三分钟演讲稿爱读书的简短故事我爱读书六年级作文爱巴士读书网为什么要收费我爱读书为话题作文10篇 书是灯塔,能指引我们前进的方向;书是蜡烛,能照亮我们前进的道路;书是信念,能提供我们前进的动

2024年7月17日 20:20

最漂亮的妇女节手抄报(最好看小学生3.8妇女节手抄报 妇女节的手抄报)

最漂亮的妇女节手抄报(最好看小学生3.8妇女节手抄报 妇女节的手抄报)

本文目录最好看小学生3.8妇女节手抄报 妇女节的手抄报三八妇女节手抄报简单又漂亮三八妇女节手抄报怎么画视频三八妇女节怎么画简单漂亮手抄报三八妇女节的手抄报怎么做简单又漂亮三八妇女节手抄报怎么画简单又漂亮三八妇女节手抄报怎么画好看最好看小学生

2024年7月3日 13:50

班超的生平简介?班超字仲升,扶风平陵人,徐令彪之少子也超于是召鄯善王广,以虏使首示之,一国震怖的译文

班超的生平简介?班超字仲升,扶风平陵人,徐令彪之少子也超于是召鄯善王广,以虏使首示之,一国震怖的译文

本文目录班超的生平简介班超字仲升,扶风平陵人,徐令彪之少子也超于是召鄯善王广,以虏使首示之,一国震怖的译文班超字仲升(西域使者、历史学家、文化交流先驱)班超字仲升原文及翻译班超字仲升原文文言文班超阅读阅读下面的文言文,完成问题  班超字仲升

2024年3月24日 09:40

长春市少年儿童图书馆的办馆宗旨?小学生如何正确上网

长春市少年儿童图书馆的办馆宗旨?小学生如何正确上网

本文目录长春市少年儿童图书馆的办馆宗旨小学生如何正确上网上海少儿图书馆的服务宗旨儿童教育有哪些网站长春市少年儿童图书馆的办馆宗旨长春市少年儿童图书馆遵循“读者第一,服务至上,以人为本”的办馆宗旨,“一切为了孩子”的服务理念,采编、流通、办公

2024年8月2日 11:20

环保行业报告(环保工作总结)

环保行业报告(环保工作总结)

本文目录环保工作总结中国环保现状环境保护统计报告书是怎么做的“双碳”政策背景下环保产业迎来机遇 2021节能环保市场全景调研环保工作自查报告5篇环保调查报告范文5篇中国环保产业发展情况环保行业现在的现状是什么64家A股环保上市公司年报出炉,

2024年5月20日 13:50

雨后的天空 有一点迷蒙(雨后的天空,有一点迷茫,在远方回首,.这是什么歌的歌词,求歌曲名)

雨后的天空 有一点迷蒙(雨后的天空,有一点迷茫,在远方回首,.这是什么歌的歌词,求歌曲名)

本文目录雨后的天空,有一点迷茫,在远方回首,.这是什么歌的歌词,求歌曲名雨后的天空为歌词的歌曲是什么呀歌词里有 有一片彩虹 的是什么歌这是一句歌词请问是什么歌秦时明月里的彩虹歌词!快点秦时明月之诸子百家的片尾曲叫什么名字,我记得歌词有一句是

2024年6月14日 13:00

如何邀约顾客的方法和技巧?活动邀请函

如何邀约顾客的方法和技巧?活动邀请函

本文目录如何邀约顾客的方法和技巧活动邀请函淘营销活动邀约是什么意思邀请别人去活动,用什么话术比较好关于邀约的10种方式邀约客户的十个方法邀请活动的邀请函如何打电话邀约家长参加周年庆典活动话术公司做活动如何邀请顾客如何邀约顾客的方法和技巧邀约

2024年8月6日 18:20