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

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

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

本文目录

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

第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

更多文章:


自由地飞翔拼音怎么注?在你的心上,自由的飞翔这个是什么歌啊

自由地飞翔拼音怎么注?在你的心上,自由的飞翔这个是什么歌啊

本文目录自由地飞翔拼音怎么注在你的心上,自由的飞翔这个是什么歌啊彩虹天堂的歌词这个歌名叫啊,全部歌词是啥,:在你的心上,自由的飞翔,灿烂的星光啥的写作文用自由的飞翔好还是自由地飞翔好自由的飞翔下一句自由地飞翔拼音怎么注自由地飞翔拼音:zì

2024年3月18日 03:50

爬天都峰教学设计(《爬天都峰》语文教学设计)

爬天都峰教学设计(《爬天都峰》语文教学设计)

本文目录《爬天都峰》语文教学设计四年级语文下册《爬天都峰》教学设计小学语文爬天都峰教学设计爬天都峰教案爬天都峰教学设计《爬天都峰》语文教学设计   《爬天都峰》语文 教学设计   传统的教学手段枯燥无味,没有直观的形态供学生了解

2024年6月16日 03:00

丰收年打一字(丰收年打一字)

丰收年打一字(丰收年打一字)

本文目录丰收年打一字字谜:丰收年(打一字 )丰收年打一字什么字丰收年打一字你好朋友,丰收年打一字就是禾苗多多,应该是移。祝你幸福开心快乐,没有烦恼。2.人的烦恼就12个字:放不下,想不开,看不透,忘不了。带着简单的心情,看复杂的人生,走坎坷

2024年9月11日 23:00

浅谈科学发展与城市经济管理(城市管理精细化管理心得体会(必备))

浅谈科学发展与城市经济管理(城市管理精细化管理心得体会(必备))

本文目录城市管理精细化管理心得体会(必备)浅谈科学发展观与城市经济管理围绕“科学发展观与城市管理”这一主题,自己选择论述角度撰写一篇论文探究从城市可持续发展的视角看城市规划政策和管理城市经济发展论文城市经济管理的方法包括哪些内容城市管理心得

2024年5月2日 20:10

课外活动作文(课外活动作文600字(优秀5篇))

课外活动作文(课外活动作文600字(优秀5篇))

本文目录课外活动作文600字(优秀5篇)课外活动作文400字小学生课外活动作文【三篇】我的课外活动二年级优秀作文丰富多彩的课外活动作文记一次课外活动作文关于课外活动写作文一年级课外活动的作文有趣的课外活动作文课外活动作文课外活动作文600字

2024年8月24日 05:00

学前儿童卫生与保健(小班卫生保健知识)

学前儿童卫生与保健(小班卫生保健知识)

本文目录小班卫生保健知识学前卫生与保育任务是什么幼儿卫生与保健主要应用于什么学前儿童卫生与保健重点知识有哪些学前儿童卫生保健包含哪些方面内容学前儿童卫生与保健与幼儿园保育的关系什么是学前儿童卫生保健学前卫生保健是学前教育专业的一门什么基础课

2024年8月13日 18:30

雨后小的故事1(雨天的故事西红柿)

雨后小的故事1(雨天的故事西红柿)

本文目录雨天的故事西红柿有没有很经典的小故事最好有搞笑的之类的,,,雨天的故事西红柿 A. 下雨天的故事…谁知道 1 下雨天的故事 窗外正下着雨,我讨厌这种阴郁的天气,因为一下雨,令我讨厌的父亲就不会出去工作,而是整天呆在家了。

2024年9月8日 18:50

最后是我开了口歌词(求一下一首歌的歌词,歌名字叫 最后,是我开了口 小贱的歌)

最后是我开了口歌词(求一下一首歌的歌词,歌名字叫 最后,是我开了口 小贱的歌)

本文目录求一下一首歌的歌词,歌名字叫 最后,是我开了口 小贱的歌最后是我开口了LRC歌词最后是我开了口歌词最后,是我开了口 歌词求“最后是我开了口”歌词,简体中文的!最后是我开了口作词 作曲最后是我开了口的歌词是什么最后 是我开了口歌词求歌

2024年9月18日 08:20

对党的认识和入党动机(对党的认识和入党动机怎么写)

对党的认识和入党动机(对党的认识和入党动机怎么写)

本文目录对党的认识和入党动机怎么写简述自己的入党动机入党动机最佳回答对党的认识及入党的动机对党的认识和入党动机简短对党的认识、入党动机、个人在政治、思想、学习、工作的表现、今后努力的方向对党的认识,或者是入党动机请尽量多谈对党的认识和入党动

2024年7月4日 06:30

大众文化的特点?如何辩证看待大众文化

大众文化的特点?如何辩证看待大众文化

本文目录大众文化的特点如何辩证看待大众文化属于大众文化但不属于先进文化的文化举例大众文化是什么什么是大众文化中国当代大众文化是什么样的文化形态《众声喧哗》中大众文化的特点大众文化的世俗性怎么理解大众文化名词解释大众文化的特点必须植根于群众的

2024年8月19日 03:00

最美乡村女教师(最美乡村女教师邓丽读后感)

最美乡村女教师(最美乡村女教师邓丽读后感)

本文目录最美乡村女教师邓丽读后感最美乡村女教师曹瑾和杨老师身上的共同点是什么被拐女成“最美乡村女教师“这是“感动“还是耻辱乡村最美女教师桂淑芬的事迹最美乡村女教师邓丽读后感最美乡村女教师邓丽读后感: 邓丽放弃城市的优厚待遇 和生活,毅然选择

2024年6月5日 22:40

送给老师的祝福语(给老师祝福语)

送给老师的祝福语(给老师祝福语)

本文目录给老师祝福语送老师祝福语怎么给老师的祝福语小学生教师节送给老师的祝福语(三篇)给老师的一些祝福语有哪些感恩节送给老师的祝福语送给老师的祝福语送给老师的祝福语4字送给老师的祝福语简短送给老师的祝福语(精选50句)给老师祝福语送老师的祝

2024年9月22日 05:10

我的漂亮妈妈高三作文?22年前的《漂亮妈妈》,根据真实故事改编,你看懂了吗

我的漂亮妈妈高三作文?22年前的《漂亮妈妈》,根据真实故事改编,你看懂了吗

本文目录我的漂亮妈妈高三作文22年前的《漂亮妈妈》,根据真实故事改编,你看懂了吗电影漂亮妈妈中她的问题和她拥有的资源是什么漂亮妈妈观后感急求《漂亮妈妈》的歌词有一个漂亮妈妈是什么体验漂亮妈妈影评漂亮妈妈观后感500字漂亮妈妈观后感600字2

2024年7月24日 19:10

手工教师节贺卡怎么做(教师节的卡片怎么制作)

手工教师节贺卡怎么做(教师节的卡片怎么制作)

本文目录教师节的卡片怎么制作送给老师的贺卡怎么做 手工教师节的贺卡怎么做教师节贺卡是怎么做的老师节贺卡怎么做简单又漂亮手工教师节贺卡怎么做 简单教师节的卡片怎么制作教师节的卡片的制作如下:1、准备好做教师节贺卡的材料:马克笔、黄色、橙色、红

2024年4月13日 11:40

我想对妈妈说的话(我想对妈妈说 作文)

我想对妈妈说的话(我想对妈妈说 作文)

本文目录我想对妈妈说 作文我想对妈妈说的心里话小学作文10篇最想对妈妈说的一句话写作文200字我想对妈妈说 作文世上只有妈妈好,有妈的孩子像个宝……”大家应该都听过这首让人觉得很亲切感人的歌。妈妈我想对您说:我无比的感谢您。 困难来了,

2024年8月16日 00:40

我的中国梦征文1500(以我的中国梦写一篇文章1500字左右)

我的中国梦征文1500(以我的中国梦写一篇文章1500字左右)

本文目录以我的中国梦写一篇文章1500字左右129征文1500字作文《我的中国梦》 字数1500字 急!爱我中华演讲稿1500字:我的中国梦,国好,家好,人好我的梦中国梦1500字一篇征文,1500字,题目 中国梦 我的梦急需一篇我的梦中国

2024年9月21日 03:40

市场营销案例题(市场营销学案例分析题与答案)

市场营销案例题(市场营销学案例分析题与答案)

本文目录市场营销学案例分析题与答案市场营销的案例题正确答案是什么市场营销学案例分析题与答案群豪服饰公司在男装市场中属于营销出色的企业,他们生产的金利衬衣的市场占有率达30%。此时,另一家公司推出了一种新款男式衬衣,其质量不比金利衬衣差,而每

2024年8月7日 18:40

积极的意思?积极是什么

积极的意思?积极是什么

本文目录积极的意思积极是什么积极是什么意思积极的意思积极乐观向上的意思是:一个人对周围人与事物正面的认知取向的心里品质,显现为人格的性格特征。精神愉快,积极向上,对事物的发展充满信心,与“悲观”相对。乐观积极其突出表现为自信乐观、耐受挫折等

2024年6月25日 19:20

化工安全文章(化工安全演讲大全5篇)

化工安全文章(化工安全演讲大全5篇)

本文目录化工安全演讲大全5篇2022化工厂安全演讲稿8篇化工厂安全演讲稿化工安全演讲稿范文关于化工厂安全主题宣传稿范文化工企业安全生产工作总结范文4篇化工厂安全感想文章化工安全心得感悟范文精选6篇化工企业安全演讲稿化工安全演讲大全5篇 一例

2024年4月16日 10:40

义父每天都来压我(上次给我发的小说都很难找到)

义父每天都来压我(上次给我发的小说都很难找到)

本文目录上次给我发的小说都很难找到义父的txt全集下载地址王西彦《义父》刘备为什么让刘禅认诸葛亮为义父上次给我发的小说都很难找到发的这些我有些也没看过,你看看能不能搜到。│ ‖推荐】《义父》BY尼罗(民国 好看 推荐!).txt│ ‖推

2024年8月29日 22:00