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

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

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

本文目录

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

第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

更多文章:


教师节手抄报内容句子(关于教师节手抄报的句子)

教师节手抄报内容句子(关于教师节手抄报的句子)

本文目录关于教师节手抄报的句子教师节手抄报上的内容教师节手抄报的句子教师节手抄报内容句子教师节手抄报的语句教师节手抄报的短句关于教师节手抄报的句子关于教师节手抄报的句子如下:1、让阳光送去美好的期待,让清风送去我们深深的祝福,让白云和蓝天永

2024年7月18日 21:10

高中语文作文素材(高中作文素材800字)

高中语文作文素材(高中作文素材800字)

本文目录高中作文素材800字高中语文议论文作文素材十则求高中语文作文素材,数学(文、理)、物理、化学、生物、政治、地理、历史知识点,英语单词短语总汇,语高中语文作文万能简短素材 助你写出高分作文!高中语文作文万能素材总结 助你下笔如有神高中

2024年4月28日 12:20

设备故障诊断与维修(计算机维修处理 微机故障的诊断方法与基本原则)

设备故障诊断与维修(计算机维修处理 微机故障的诊断方法与基本原则)

本文目录计算机维修处理 微机故障的诊断方法与基本原则变频器故障诊断与维修abb变频器故障诊断与维修机械故障诊断的基本内容有哪些电脑故障处理方法机电设备故障诊断与维修课程的考核方式是什么机电设备的故障诊断与维修课程给你带来了哪些专业知识和技能

2024年9月27日 04:30

芒种节气吃什么食物好(芒种节气的养生方法有哪些)

芒种节气吃什么食物好(芒种节气的养生方法有哪些)

本文目录芒种节气的养生方法有哪些中国传统节气-芒种芒种节气美食推荐芒种时节吃什么传统食物芒种节气吃什么食物芒种吃哪几种传统食物芒种节气吃啥好呢芒种节气,你知道吃什么传统食物吗芒种节气吃什么传统食物芒种节气吃什么传统的食物芒种节气的养生方法有

2024年9月11日 23:50

有志者事竟成英语作文(有志者,事竟成,写一篇英语作文)

有志者事竟成英语作文(有志者,事竟成,写一篇英语作文)

本文目录有志者,事竟成,写一篇英语作文关于“有志者事竟成” 初2水平英语作文英语写作第762223作文范文关于人生的英语作文名人故事英语作文范文10篇有志者事竟成六年级英语作文有志者,事竟成,写一篇英语作文Nothing is imposs

2024年9月21日 20:20

元旦春节期间(元旦春节期间(欢乐的假日))

元旦春节期间(元旦春节期间(欢乐的假日))

本文目录元旦春节期间(欢乐的假日)元旦春节期间能否出行2022元旦春节哪些人限制出行年春节能正常出行吗元旦春节疫情达到高峰的原因元旦和春节有什么不同元旦是指春节吗为什么说元旦、春节假期将成文旅消费黄金周元旦和春节的区别是什么元旦与春节有什么

2024年8月28日 01:40

郁郁寡欢的反义词(郁郁寡欢意思)

郁郁寡欢的反义词(郁郁寡欢意思)

本文目录郁郁寡欢意思郁郁寡欢的解释郁郁寡欢的反义词是什么郁郁寡欢反义词郁郁寡欢什么意思近义词和反义词是什么四年级下册《语文》第五课的近义词、反义词和多音字分别是什么闷闷不乐的反义词是什么 标准答案郁郁寡欢意思郁郁寡欢意思是形容心里苦闷,闷闷

2024年7月11日 01:00

人际沟通理论(了解人际沟通理论吗一个好家长,有益于孩子儿童自状态形成)

人际沟通理论(了解人际沟通理论吗一个好家长,有益于孩子儿童自状态形成)

本文目录了解人际沟通理论吗一个好家长,有益于孩子儿童自状态形成萨提亚提出了人际沟通理论是否正确人际关系的基本理论有哪三种人际沟通的基本理论根据萨提亚的人际沟通理论沟通的时候需要关注哪些部分人际交往理论有哪些人际沟通理论有哪些人际关系的基本理

2024年4月9日 14:00

服务器维护方案(什么是服务器加固服务器有哪些加固方案)

服务器维护方案(什么是服务器加固服务器有哪些加固方案)

本文目录什么是服务器加固服务器有哪些加固方案绝地求生全军出击无法连接服务器怎么解决高手,所有传奇私服的网站都打不开,解决网站服务器维护win10系统玩cf出现连接服务器失败如何解决校园网登录问题解决方案Windows 的服务器安全加固方案G

2024年9月8日 15:00

风继续吹 歌词(张国荣《风继续吹》的歌词)

风继续吹 歌词(张国荣《风继续吹》的歌词)

本文目录张国荣《风继续吹》的歌词张国荣 风继续吹 歌词国语谐音风继续吹歌词风继续吹歌词是什么风继续吹,不忍别离,歌名是什么“风继续吹”是哪首歌的歌词张国荣风继续吹的歌词风继续吹歌词要表达什么意思《风继续吹》歌词是什么张国荣《风继续吹》的歌词

2024年4月21日 09:40

汤姆索亚历险记赏析(你如何评价汤姆索亚历险记这部作品)

汤姆索亚历险记赏析(你如何评价汤姆索亚历险记这部作品)

本文目录你如何评价汤姆索亚历险记这部作品《汤姆索亚历险记》句子赏析是什么汤汤姆索亚历险记 整本赏析汤姆索亚历险记好句加解释赏析汤姆索亚历险记精彩片段赏析汤姆索亚历险记人物赏析汤姆索亚历险记好词好句赏析求汤姆索亚历险记摘抄加赏析你如何评价汤姆

2024年3月12日 02:00

看云识天气教学设计(湘教版七年级语文教案5篇)

看云识天气教学设计(湘教版七年级语文教案5篇)

本文目录湘教版七年级语文教案5篇七年级语文上册第22课《看云识天气》教案七年级语文《看云识天气》教学设计《看云识天气》七年级语文教学设计如何建构初中语文高效课堂教学模式如何通过把信息技术整合于语文教学过程来提高教学质量和效果的人教版七年级语

2024年5月17日 00:00

心里憋屈想哭的句子(心里憋屈想哭的句子)

心里憋屈想哭的句子(心里憋屈想哭的句子)

本文目录心里憋屈想哭的句子心里难受压抑想哭的句子心里憋屈想哭的句子短句心里委屈压抑憋屈到想哭说说文案心里憋屈想哭的句子 心里憋屈想哭的句子 心里憋屈想哭的句子,当不被理解的时候人们就很容易觉得憋屈,在无人诉说的自己心中的苦闷的时候人们只

2024年2月28日 00:30

什么是辩论赛中的辩题?18道辩论赛题目

什么是辩论赛中的辩题?18道辩论赛题目

本文目录什么是辩论赛中的辩题18道辩论赛题目求辩论赛辩题(具有创新有趣)辩论赛的辩题是什么5个 非常有趣的辩题 辩论赛关于大学辩论赛辩题精选适合大一新生的辩论赛辩题有哪些呢大学生辩论赛应该讨论哪些辩题大学生辩论赛,求100个辩题20个大学生

2024年3月24日 20:30

我的植物朋友记录卡(三年级我的植物朋友记录卡怎么写)

我的植物朋友记录卡(三年级我的植物朋友记录卡怎么写)

本文目录三年级我的植物朋友记录卡怎么写我的植物朋友我的植物朋友郁金香记录卡怎么写我的植物朋友记录表怎么写夏天各种各样的树木都长得枝繁叶茂请你为自己的树木朋友做个记录卡吧植物记录卡迎春花怎么写我的植物朋友,记录卡怎么做,写多肉我的植物朋友怎么

2024年5月4日 08:00

在农产品直销网如何营销?农产品的销售一般都有哪些途径

在农产品直销网如何营销?农产品的销售一般都有哪些途径

本文目录在农产品直销网如何营销农产品的销售一般都有哪些途径农副产品最好的销售模式是什么农产品难卖9个农产品推广的方法,搞定1种不赚钱都难在农村从事直销行业,会不会有什么前景在农村极具前景的4种行业直销型农产品流通环节包括(  )疫情当下果农

2024年6月30日 20:50

小小动物园作文写家里人四年级(我家是个小小动物园四年级作文)

小小动物园作文写家里人四年级(我家是个小小动物园四年级作文)

本文目录我家是个小小动物园四年级作文小小动物园作文四年级350字左右写人家庭动物园四年级作文小小动物园作文500字写家人小小动物园四年级作文400字写家人我家是个小小动物园四年级作文   我有一个温暖的家,有一个像老虎的妈妈,一个像黄牛的奶

2024年3月30日 13:50

初三微机考试考什么内容?河北中考微机考试考什么

初三微机考试考什么内容?河北中考微机考试考什么

本文目录初三微机考试考什么内容河北中考微机考试考什么高中微机课会考是必考吗微机考试用的软件叫什么高中微机学考和其他一起考吗河北微机会考时间山东中考微机考试时间中考微机不及格的后果微机考试的软件叫什么98年到02年《微机原理与接口技术》的试题

2024年3月7日 19:50

产后如何收腹(产后收腹带使用方法和注意事项)

产后如何收腹(产后收腹带使用方法和注意事项)

本文目录产后收腹带使用方法和注意事项产后如何减掉小肚子产后如何快速收腹生完孩子不用收腹带如何将肚皮收紧产后收腹带的正确使用方法产后如何收腹减肚子产后如何收腹产后如何瘦小腹产后收腹带使用方法和注意事项产后使用收腹带收腹是比较常见的一种产后现象

2024年5月14日 09:30

《勇气》的歌词是什么?梁咏琪勇气歌词

《勇气》的歌词是什么?梁咏琪勇气歌词

本文目录《勇气》的歌词是什么梁咏琪勇气歌词勇气的歌词是什么梁静茹勇气歌词勇气这首歌的歌词是什么勇气的歌词梁静茹《勇气》歌词《勇气》梁静茹歌词歌曲《勇气》歌词《勇气》的歌词是什么《勇气》是华语流行乐女歌手梁静茹演唱的一首疗伤情歌,这首歌由光良

2024年6月24日 12:30