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

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

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

本文目录

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

第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年9月30日 03:20

星月相伴的唯美句子(星月相伴的唯美句子)

星月相伴的唯美句子(星月相伴的唯美句子)

本文目录星月相伴的唯美句子星月相伴的一些佳句星月相伴的唯美句子有哪些我爱你幸福句子星月相伴的唯美句子(星月相伴人长久)星月相伴,下一句是什么星月相伴的诗意句子星月相伴的唯美句子1、亲爱的,每天我起床之后的第一件事便是:想你!第二件事便是:看

2024年8月26日 21:30

难忘的第一次作文300字(一年级难忘的第一次作文300字)

难忘的第一次作文300字(一年级难忘的第一次作文300字)

本文目录一年级难忘的第一次作文300字难忘的第一次作文300字难忘的第一次300字优秀作文三年级难忘的第一次小学三年级300字作文三年级难忘的第一次作文300字7篇难忘的第一次小学三年级作文300字一年级难忘的第一次作文300字 1.一年

2024年6月26日 01:20

善良的反义词是什么(“善良”的反义词是什么)

善良的反义词是什么(“善良”的反义词是什么)

本文目录“善良”的反义词是什么善良的反义词是什么善良的反义词有什么善良的反义词善良的反义词有哪些善良的反义词是什么呢“善良”的反义词是什么反义词:凶狠 、阴险 、歹毒  、邪恶 、恶毒 。1、凶狠读音:释义:凶恶狠毒造句:凶狠的敌人朝着手无

2024年8月26日 23:40

网站优化方案(如何策划一份网站SEO优化方案)

网站优化方案(如何策划一份网站SEO优化方案)

本文目录如何策划一份网站SEO优化方案如何制定一份完美的网站优化方案如何做好网站优化网站优化如何策划网站建设优化方案网站优化网站优化有哪些方式网站怎么优化网站seo该怎么优化有哪些方法呢网站优化方案如何写如何制定seo网站优化方案如何策划一

2024年6月10日 11:30

变形金刚3影评(谁能帮我写篇变形金刚3的英文影评急!!!字数150左右,采纳后有追加)

变形金刚3影评(谁能帮我写篇变形金刚3的英文影评急!!!字数150左右,采纳后有追加)

本文目录谁能帮我写篇变形金刚3的英文影评急!!!字数150左右,采纳后有追加变形金刚3影评(凭变形金刚全球大火)变形金刚观后感《变形金刚3》观后感谁能帮我写篇变形金刚3的英文影评急!!!字数150左右,采纳后有追加影评1 And drive

2024年4月7日 07:40

二十二观后感400字(小故事大道理读后感400字左右5篇)

二十二观后感400字(小故事大道理读后感400字左右5篇)

本文目录小故事大道理读后感400字左右5篇西游记22回读后感,要白话文的!初一水平西游记第二十二回读后感文言文西游记21读后感红楼梦第二十二回300字以内读后感求红楼梦第22回读后感,要有人物分析情节分析的,不少于800字三国演义 第二十二

2024年7月28日 10:00

平时生活中你见过哪些高尚的行为,请写下二中来?什么样的行为称得上高尚举个例子说说

平时生活中你见过哪些高尚的行为,请写下二中来?什么样的行为称得上高尚举个例子说说

本文目录平时生活中你见过哪些高尚的行为,请写下二中来什么样的行为称得上高尚举个例子说说主要的内容是什么 高尚的行为这篇课文主要讲了什么事情什么样的行为是高尚的什么样的行为可以被称之为高尚的行为什么样的行为才算是高尚的呢高尚的行为阅读题答案高

2024年9月29日 23:40

高一地理必修一第一章(高一地理必修一第一章知识点:太阳对地球的影响)

高一地理必修一第一章(高一地理必修一第一章知识点:太阳对地球的影响)

本文目录高一地理必修一第一章知识点:太阳对地球的影响高一地理必修一第一章知识点总结高中地理必修一第一章总结高一必修一地理重点高一地理必修一第一章知识点高一地理必修一知识点概要高一地理必修一章节知识结构图解高一地理必修一第一章知识点笔记高一地

2024年4月11日 23:50

校园文化规划(校园文化建设工作计划表模板)

校园文化规划(校园文化建设工作计划表模板)

本文目录校园文化建设工作计划表模板校园文化宣传工作计划范例校园文化设计方案铁西小学校园文化建设规划方案如何进行学校文化建设在校大学生文化活动方案五篇校园文化建设工作计划表模板 工作计划表就是使用表格的形式反映工作计划的内容。表格是工作计划的

2024年9月25日 03:40

卢沟桥事变简介(卢沟桥事变的历史事件介绍)

卢沟桥事变简介(卢沟桥事变的历史事件介绍)

本文目录卢沟桥事变的历史事件介绍关于中国泸沟桥事变的资料七七事变简介50字卢沟桥事变简介七七事变简介七七事变简介20字数卢沟桥事变资料有关七七卢沟桥事变的资料77事变介绍卢沟桥事变的历史事件介绍  卢沟桥事变是日本帝国主义全面侵华战争的开始

2024年4月2日 15:00

表态发言材料(2023工作表态发言稿)

表态发言材料(2023工作表态发言稿)

本文目录2023工作表态发言稿在全区乡村振兴工作会上的表态发言材料2023工作表态发言稿 2023工作表态发言稿5篇 你会写发言稿吗?发言稿的内容要根据具体情境, 具体场合来确定,要求情感真实还有尊重观众。下面是我为大家整理的2023工作

2024年4月9日 07:00

供电所优质服务(供电所电力优质服务宣传标语)

供电所优质服务(供电所电力优质服务宣传标语)

本文目录供电所电力优质服务宣传标语电力优质服务演讲稿3篇供电优质服务心得体会供电所优质服务总结怎样提高供电所营销水平和优质服务电力优质服务工作总结如何做好供电所优质服务工作如何做好电力优质服务供电所转度供电服务的意义优质服务是国家电网生命线

2024年6月19日 01:50

熟能生巧作文(高考优秀作文:以熟能生巧为题)

熟能生巧作文(高考优秀作文:以熟能生巧为题)

本文目录高考优秀作文:以熟能生巧为题小学四年级作文350字:熟能生巧以熟能生巧为主题的作文素材3个要求150字用熟能生巧写作文熟能生巧作文 熟能生巧的作文范文三年级优秀作文:熟能生巧熟能生巧作文熟能生巧作文三篇 以熟能生巧为话题的作文小学一

2024年9月6日 11:20

女神发朋友圈简短语句(女神朋友圈发表说说)

女神发朋友圈简短语句(女神朋友圈发表说说)

本文目录女神朋友圈发表说说女神发朋友圈的句子女神发朋友圈简短语句 有气质女人发朋友圈女神发朋友圈简短语句女神朋友圈发表说说发朋友圈或者发说说时发女神照片可以配如下文:1、今天分享一张女神照片,因为每个女性都值得被称为女神。2、面对生活的挑战

2024年4月28日 07:20

欢乐颂小说结局(欢乐颂小说结局是什么 樊胜美关雎尔邱莹莹安迪曲筱绡结局)

欢乐颂小说结局(欢乐颂小说结局是什么 樊胜美关雎尔邱莹莹安迪曲筱绡结局)

本文目录欢乐颂小说结局是什么 樊胜美关雎尔邱莹莹安迪曲筱绡结局欢乐颂原著小说结局 下面是欢乐颂原著小说结局欢乐颂小说结局欢乐颂原著结局是什么欢乐颂原著小说结局是什么安迪跟谁在一起欢乐颂最后结局是什么样子啊欢乐颂小说的结局是什么,详细一点欢乐

2024年7月2日 22:00

能够免费看优美句子的软件?句子迷和句子星球哪个好

能够免费看优美句子的软件?句子迷和句子星球哪个好

本文目录能够免费看优美句子的软件句子迷和句子星球哪个好唯美句子的网站句子迷APP怎么样我昨天上句子迷网站的时候输错了密码,一直登陆不上,结果到今天这个网址都打不开,这是什么原因句子迷网站怎么删除有类似的网站吗能够免费看优美句子的软件推荐:句

2024年7月8日 13:20

拮据的近义词(“拮据“的近义词是什么)

拮据的近义词(“拮据“的近义词是什么)

本文目录“拮据“的近义词是什么拮据的近义词拮据的近义词是什么拮据的近义词是什么“拮据”的近义词有哪些拮据的近义词“拮据“的近义词是什么"拮据"的近义词是:困窘、窘迫、窘困、困笑祥苦、贫困。1、困窘 kùn jiǒng 贫困窘迫;为难。  想

2024年8月1日 03:40

元旦祝福语30字(元旦祝福语30字左右)

元旦祝福语30字(元旦祝福语30字左右)

本文目录元旦祝福语30字左右元旦祝福语40字关于元旦祝福语(50字左右)元旦节祝福语40字元旦吉祥话祝福语元旦祝福语30字左右1、元旦了,给心情放个假。远离琐碎烦恼,携带快乐微笑,逃出繁忙,躲过压力,平静地走进问候驿站。愿你有个快乐舒适的元

2024年4月9日 22:00

建筑灭火器配置设计规范(建筑灭火器配置设计规范)

建筑灭火器配置设计规范(建筑灭火器配置设计规范)

本文目录建筑灭火器配置设计规范2023年灭火器最新国家标准有哪些灭火器的配置数量应按现行国家标准建筑灭火器配置设计规范gb50140灭火器配置标准是什么建筑物内的灭火器是如何配置的施工现场灭火器配备的标准灭火器配置有哪些规定和要求厂房灭火器

2024年9月26日 05:30