数据结构课程设计题目2011电气dddd
- 格式:doc
- 大小:44.00 KB
- 文档页数:3
数据结构课程设计题目一、题目背景在现代科技发展的背景下,数据结构作为计算机科学的重要基础课程,对于培养学生的编程思维、数据处理能力具有重要的作用。
本篇课程设计将围绕数据结构的实际应用,设计一个能够提升学生数据结构理论与实践能力的题目。
二、题目描述你需要设计一个软件,实现以下功能:能够记录学生信息并进行相关的数据操作。
具体要求如下:1. 学生信息包括:学生学号、姓名、性别、年龄、身高、体重等基本信息;2. 软件需要实现以下操作:a. 添加学生信息:可以手动添加每个学生的详细信息,并将其记录到数据库中;b. 删除学生信息:能够根据学号或姓名删除指定学生的信息;c. 修改学生信息:能够根据学号或姓名修改指定学生的信息;d. 查询学生信息:能够按照学号、姓名、性别、年龄等条件进行学生信息的查询,并将结果以列表形式展示;e. 统计学生信息:能够统计学生的平均年龄、平均身高、平均体重等统计数据,并展示在界面上;f. 数据导入导出:能够将学生信息导入/导出到文件或数据库中,实现数据的持久化存储。
三、设计思路为了实现上述功能,你可以采用以下的设计思路:1. 数据结构选择:可以使用链表、数组、树等数据结构存储学生信息,具体根据功能需求来选择合适的数据结构;2. 界面设计:考虑采用图形界面或者命令行界面,以提供方便的操作方式;3. 数据存储:可以使用文件、数据库等方式进行数据的存储和读取,以实现数据的持久化;4. 算法设计:在实现功能的过程中,需要考虑合适的算法来实现快速的查找、删除和修改等操作;5. 错误处理:在设计过程中,需要考虑各种可能的错误情况,并进行相应的处理和提示。
四、实施步骤为了顺利完成该课程设计,你可以按照以下步骤进行:1. 分析题目需求:仔细阅读以上题目描述,明确实现各项功能的具体要求;2. 设计数据结构:选择合适的数据结构来存储学生信息,考虑数据的增删改查等操作的效率;3. 设计算法:根据功能需求,设计相应的算法来实现各项操作;4. 实现界面:根据选择的界面方式,设计相应的图形界面或命令行交互界面;5. 实现功能:按照题目要求,逐个实现各项功能,并进行测试;6. 完善细节:对界面进行美化,完善用户交互体验,处理各种错误情况;7. 测试与调试:对整个软件进行全面的测试,并进行调试修复可能存在的问题;8. 编写报告:撰写课程设计报告,详细记录设计过程、实现方法、遇到的问题以及解决方案等。
《数据结构》课程设计要求一、本课程的地位、目的《数据结构》课程设计是计算机科学技术专业集中实践性环节之一,是学习完《数据结构》课程后进行的一次全面的综合练习。
开设该课程设计的主要目的是:1. 使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。
2. 使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。
3. 使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。
二、课程设计的内容和要求根据课程设计的时间和个人能力,在老师的协助下选择适当难度的课程设计课题,用C/C++语言实现。
具体内容如下:1、需求分析以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定:输入的形式,输出的形式和值的范围;程序所能达到的功能;测试的数据。
2、概要设计说明程序中用到的所有抽象数据类型的定义,主程序的流程以及各程序模块之间的层次(调用)关系。
3、详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出伪代码算法,画出函数的调用关系图。
4、调试分析调试过程中遇到的问题并且是如何解决的以及对设计实现的回顾讨论和分析;算法的时空分析(包括基本操作和主要算法的时空复杂度的分析)和改进设想;经验和体会等5、用户使用说明说明用户如何使用你编写的程序,详细列出每一步的操作步骤。
6、测试结果列出测试结果,包括输入的数据和相应的输出数据。
7、附录详细注释的源程序。
具体要求如下:1. 巩固和加深对数据结构基本知识的理解,提高综合运用课程知识的能力。
2. 培养学生自学参考书籍,查阅手册、图表和文献资料的能力。
3. 通过实际课程设计,初步掌握简单软件的分析方法和设计方法。
4. 了解与课程有关的工程技术规范,能正确解释和分析实验结果。
三、与其它课程的联系先修课程为《C语言程序设计》和《数据结构》等。
四、课程设计报告撰写课程设计报告包括:封面、任务书、目录、正文和参考文献等。
数据结构课程设计报告含代码HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】西安邮电学院数据结构课程设计报告题目:校园导航系统院系名称:计算机学院专业名称:计算机科学与技术班级:学生姓名:学号(8位):指导教师:设计起止时间:2011年12月11日~2011年12月15日一. 设计目的1.通过本次课程设计巩固《数据结构》中所学的内容;2.提高自己上机编程以及调试能力。
二. 设计内容1.设计所在学校的校园平面图,所含景点不少于10个。
以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
2.为来访客人提供图中任意景点相关信息的查询。
3.为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
三.概要设计1.功能模块图;2.各个模块详细的功能描述。
1. 可以手动创建一个校园图。
2. 可以直接从文件读取校园各个景点的信息。
3. 可选择从任意个景点作为起点进行遍历。
4. 输入景点序号查询该景点相关信息。
5. 输入两个景点查询两个景点的最短,最佳及其所有的路径。
6. 将校园图信息保存入文件。
四.详细设计1.功能函数的调用关系图2.各功能函数的数据流程图1. Adjmatrix *g即结构体对象在main()中被创建在其他子函数中进行参数传递。
2. 全局变量visited数组中用。
3. 全局变量shorest[][],path[][]在floyd()中被赋值来分别记录v[i]-v[j]最短路径和 v[i]-v[j]所经过景点。
3.重点设计及编码两景点最短距离弗洛伊德算法void floyd(adjmatrix *g){int i,j,k;for(i=0;i<g->vexnum;i++)for(j=0;j<g->vexnum;j++)shortest[i][j]=0;for(i=0;i<g->vexnum;i++)for(j=0;j<g->vexnum;j++){shortest[i][j]=g->arcs[i][j].adj;path[i][j]=0;}for(i=0;i<g->vexnum;i++)for(j=0;j<g->vexnum;j++)for(k=0;k<g->vexnum;k++)if(shortest[i][j]>(shortest[i][k]+shortest[k][j])){shortest[i][j]=shortest[i][k]+shortest[k][j];path[i][j]=k;path[j][i]=k;}}五.测试数据及运行结果1.正常测试数据和运行结果要求提供3组正常测试数据和运行结果2(遍历功能)1(起始景点序号)1 校门呈长方形,校训:爱国、求实、奋进2 喷泉呈鸽子形状,喷射出水花3 教学楼传授知识和学习知识4 实验楼供学生进行课程实验和教师办公5 洗浴中心供学生洗澡,内设单人间和双人间6 美食广场仅一层,快餐味道不错7 图书馆共七层,存储大量书籍供学生查阅和学习8 旭日苑共三层,主要的就餐场所9 体育馆内设篮球场,羽毛球场和观看席10 宿舍休息的场所5(查询景点信息)2(景点序号)2 喷泉呈鸽子形状,喷射出水花6(查询两景点最短路径)1 9(两景点序号)1->2->7->91->9 最短距离:570米2.异常测试数据及运行结果要求提供2组异常测试数据和运行结果9无此功能模块请重新输入5(功能模块)11(景点序号)无此景点请重新输入六.调试情况,设计技巧及体会1.改进方案1. 可将景点文件,边文件及账户密码合并为一个文件。
数据结构课程设计题目数据结构课程设计题目要求:(1)每人选择一题,选好后把选题名单交给学习委员统一上交给老师(2)要求上交源程序和课程设计报告,均为电子版,保存在自己名字的文件夹中(3)上交前,程序调试运行成功才算完成。
(4)最后完成时间2010年1月25日,先做完的可以先交。
(5)课程设计报告参考范例题目:1、课本46页,2-202、课本46页,2-243、课本47页,2-254、课本84页,3-185、课本85页,3-236、课本110页,4-167、课本110页,4-178、课本111页,4-199、课本111页,4-2010、课本126页,5-1911、课本126页,5-2012、课本148页,6-1313、课本148页,6-1614、课本251页,9-2015、课本278页,10-3116、课本310页,11-2717、课本311页,11-2918、课本311页,11-3019、课本311页,11-3120、文章编辑静态存储一页文章,每行最多不超过80个字符,共N行;输入此文章,统计出文字、数字、空格的个数。
要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据可以是大写、小写的英文字母、任何数字及标点符号。
输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章。
21、纸牌游戏编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;...再依次5的倍数的牌翻一次、6、7的直到以52为基数的翻过。
学生课程设计报告开课学院国际教育学院指导教师姓名佘名高学生姓名学生专业班级10春/秋计算机2011 —2012学年第一学期数据结构课程设计2011-12●课程设计题目与内容用C语言编制一个统计学生考试分数的管理程序。
◇设学生成绩已以一个学生一个记录的形式存储在文件中,每位学生记录包含的信息有:姓名,学号和各门功课的成绩。
◇程序具有以下几项功能:⑴求出各门课程的总分,平均分;⑵按姓名,按学号寻找其记录并显示;⑶浏览全部学生成绩和按总分由高到低显示学生信息等。
#include <stdio.h>#define SWN 3 /* 课程数*/#define NAMELEN 20 /* 姓名最大字符数*/#define CODELEN 10 /* 学号最大字符数*/#define FNAMELEN 80 /* 文件名最大字符数*/#define BUFLEN 80 /* 缓冲区最大字符数*//* 课程名称表*/char schoolwork[SWN][NAMELEN+1] = {"Chinese","Mathematic","English"};struct record{char name[NAMELEN+1]; /* 姓名*/char code[CODELEN+1]; /* 学号*/int marks[SWN]; /* 各课程成绩*/int total; /* 总分*/}stu;struct node{char name[NAMELEN+1]; /* 姓名*/char code[CODELEN+1]; /* 学号*/int marks[SWN]; /* 各课程成绩*/int total; /* 总分*/struct node *next; /* 后续表元指针*/}*head; /* 链表首指针*/int total[SWN]; /* 各课程总分*/FILE *stfpt; /* 文件指针*/char stuf[FNAMELEN]; /* 文件名*//* 从指定文件读入一个记录*/int readrecord(FILE *fpt,struct record *rpt){char buf[BUFLEN];int i;if(fscanf(fpt,"%s",buf)!=1)return 0; /* 文件结束*/strncpy(rpt->name,buf,NAMELEN);fscanf(fpt,"%s",buf);strncpy(rpt->code,buf,CODELEN);for(i=0;i<SWN;i++)fscanf(fpt,"%d",&rpt->marks[i]);for(rpt->total=0,i=0;i<SWN;i++)rpt->total+=rpt->marks[i];return 1;}/* 对指定文件写入一个记录*/writerecord(FILE *fpt,struct record *rpt){int i;fprintf(fpt,"%s\n",rpt->name);fprintf(fpt,"%s\n",rpt->code);for(i=0;i<SWN;i++)fprintf(fpt,"%d\n",rpt->marks[i]);return ;}/* 显示学生记录*/displaystu(struct record *rpt){int i;printf("\nName : %s\n",rpt->name);printf("Code : %s\n",rpt->code);printf("Marks :\n");for(i=0;i<SWN;i++)printf(" %-15s : %4d\n",schoolwork[i],rpt->marks[i]);printf("Total : %4d\n",rpt->total);}/* 计算各单科总分*/int totalmark(char *fname)FILE *fp;struct record s;int count,i;if((fp=fopen(fname,"r"))==NULL){printf("Can't open file %s.\n",fname);return 0;}for(i=0;i<SWN;i++)total[i]=0;count=0;while(readrecord(fp,&s)!=0){for(i=0;i<SWN;i++)total[i]+=s.marks[i];count++;}fclose(fp);return count; /* 返回记录数*/}/* 列表显示学生信息*/void liststu(char *fname){FILE *fp;struct record s;if((fp=fopen(fname,"r"))==NULL){printf("Can't open file %s.\n",fname);return ;}while(readrecord(fp,&s)!=0){displaystu(&s);printf("\n Press ENTER to continue...\n");while(getchar()!='\n');}fclose(fp);return;}/* 构造链表*/struct node *makelist(char *fname)FILE *fp;struct record s;struct node *p,*u,*v,*h;int i;if((fp=fopen(fname,"r"))==NULL){printf("Can't open file %s.\n",fname);return NULL;}h=NULL;p=(struct node *)malloc(sizeof(struct node));while(readrecord(fp,(struct record *)p)!=0){v=h;while(v&&p->total<=v->total){u=v;v=v->next;}if(v==h)h=p;elseu->next=p;p->next=v;p=(struct node *)malloc(sizeof(struct node));}free(p);fclose(fp);return h;}/* 顺序显示链表各表元*/void displaylist(struct node *h){while(h!=NULL){displaystu((struct record *)h);printf("\n Press ENTER to continue...\n");while(getchar()!='\n');h=h->next;}return;}/* 按学生姓名查找学生记录*/int retrievebyn(char *fname, char *key){FILE *fp;int c;struct record s;if((fp=fopen(fname,"r"))==NULL){printf("Can't open file %s.\n",fname);return 0;}c=0;while(readrecord(fp,&s)!=0){if(strcmp(,key)==0){displaystu(&s);c++;}}fclose(fp);if(c==0)printf("The student %s is not in the file %s.\n",key,fname);return 1;}/* 按学生学号查找学生记录*/int retrievebyc(char *fname, char *key){FILE *fp;int c;struct record s;if((fp=fopen(fname,"r"))==NULL){printf("Can't open file %s.\n",fname);return 0;}c=0;while(readrecord(fp,&s)!=0){if(strcmp(s.code,key)==0){displaystu(&s);c++;break;}}fclose(fp);if(c==0)printf("The student %s is not in the file %s.\n",key,fname);return 1;}main(){int i,j,n;char c;char buf[BUFLEN];FILE *fp;struct record s;clrscr();printf("Please input the students marks record file's name: ");scanf("%s",stuf);if((fp=fopen(stuf,"r"))==NULL){printf("The file %s doesn't exit, do you want to creat it? (Y/N) ",stuf);getchar();c=getchar();if(c=='Y'||c=='y'){fp=fopen(stuf,"w");printf("Please input the record number you want to write to the file: ");scanf("%d",&n);for(i=0;i<n;i++){printf("Input the student's name: ");scanf("%s",&);printf("Input the student's code: ");scanf("%s",&s.code);for(j=0;j<SWN;j++){printf("Input the %s mark: ",schoolwork[j]);scanf("%d",&s.marks[j]);}writerecord(fp,&s);}fclose(fp);}}fclose(fp);getchar();/*clrscr();*/puts("Now you can input a command to manage the records.");puts("m : mean of the marks.");puts("t : total of the marks.");puts("n : search record by student's name.");puts("c : search record by student's code.");puts("l : list all the records.");puts("s : sort and list the records by the total.");puts("q : quit!");while(1){puts("Please input command:");scanf(" %c",&c); /* 输入选择命令*/if(c=='q'||c=='Q'){puts("\n Thank you for your using.");break; /* q,结束程序运行*/}switch(c){case 'm': /* 计算平均分*/case 'M':if((n=totalmark(stuf))==0){puts("Error!");break;}printf("\n");for(i=0;i<SWN;i++)printf("%-15s's average is: %.2f.\n",schoolwork[i],(float)total[i]/n);break;case 't': /* 计算总分*/case 'T':if((n=totalmark(stuf))==0){puts("Error!");break;}printf("\n");for(i=0;i<SWN;i++)printf("%-15s's total mark is: %d.\n",schoolwork[i],total[i]);break;case 'n': /* 按学生的姓名寻找记录*/case 'N':printf("Please input the student's name you want to search: ");scanf("%s",buf);retrievebyn(stuf,buf);break;case 'c': /* 按学生的学号寻找记录*/case 'C':printf("Please input the student's code you want to search: ");scanf("%s",buf);retrievebyc(stuf,buf);break;case 'l': /* 列出所有学生记录*/case 'L':liststu(stuf);break;case 's': /* 按总分从高到低排列显示*/case 'S':if((head=makelist(stuf))!=NULL)displaylist(head);break;default: break;}}}小结:(学生自己写出感受和体会,字数500字)。
数据结构课程设计题目(最终版)数据结构课程设计题目1、医务室模拟。
问题描述:假设只有一位医生,在一段时间内随机地来几位病人;假设病人到达的时间间隔为0~14分钟之间的某个随机值,每个病人所需处理时间为1~9分钟之间的某个随机值。
试用队列结构进行模拟。
实现要求:要求输出医生的总等待时间和病人的平均等待时间。
程序设计思路:计算机模拟事件处理时,程序按模拟环境中的事件出现顺序逐一处理,在本程序中体现为医生逐个为到达病人看病。
当一个病人就诊完毕而下一位还未到达时,时间立即推进为下一位病人服务,中间时间为医生空闲时间。
当一个病人还未结束之前,另有一位病人到达,则这些病人应依次排队,等候就诊。
2、招聘模拟问题描述:某集团公司为发展生产向社会公开招聘m个工种的工作人员,每个工种各有不同的编号(0,1,2,…,m-1)和计划招聘人数,参加招聘的人数有n个(编号为0,1,2,。
,n-1)。
每位应聘者可以申报两个工种,并参加公司组织的考试。
公司将按应聘者的成绩,从高到低的顺序排队录取。
公司的录取原则是:从高分到低分依次对每位应聘者按其第一志愿录取;当不能按第一志愿录取时,便将他的成绩扣去5分后,重新排队,并按其志愿考虑录取。
程序为每个工种保留一个录取者的有序队列。
录取处理循环直至招聘额满,或已对全部应聘者都做了录用处理。
实现要求:要求程序输出每个工种录用者的信息(编号、成绩),以及落选者的信息(编号、成绩)。
3、组织机构问题问题描述:以青岛理工大学为例,实现对我校组织结构的管理。
要求把我校的组织结构以树型结构存储,实现要求:(1)树中每个结点保存部门名称;(2)假定处级部门(含院系)在树中第二层,科级部门在第三层(即最后一层),软件应该能计算出处级部门有几个,有哪几个?(3)软件可以查询某部门下面的具体编制?4、最少换车次数问题问题描述:设某城市有n个车站,并有m条公交线路连接这些车站。
设这些公交车站都是单向的,这n个车站被顺序编号为0~n-1。
算法与数据结构课程设计一、线性表题1、建立一个单链表,显示链表中每个节点的数据,并做删除和插入处理。
例:(掌握线性表在链式存储结构下的基本运算的实现。
)1、功能(1)建立以带头结点的单链表(2)显示链表中每个结点的数据(3)在单链表中指定位置插入指定数据并输出单链表中所有数据(4)删除单链表中指定的结点并输出单链表中所有数据2、输入要求输入单链表中所有数据,插入的数据元素的位置、值,要删除的数据元素的位置。
3、测试数据单链表中所有数据:12,23,56,21,8,10,15,67,90,32插入的数据元素的位置、值:1,28要删除的数据元素的位置:10[概要设计](1)算法思想:由于在操作过程中要进行插入、删除操作,为运算方便,选用单带头结点的单链表作数据元素的存储结构。
对每个数据元素,由一个数据域和一个指针域组成,数据域放输入的数据值,指针域指向下一个结点。
(2)数据结构单链表结点类型:typedef struct Node{ int data;struct node *next;}ListNode;带头结点的单链表类型定义:typedef ListNode *LinkList;(3)模块划分:①建立点头结点的单链表CreatLinkList;②显示链表中每个结点的数据PrintList;③在单链表中指定位置插入指定数据并输出单链表中所有数据InsertList;④删除单链表中指定的结点并输出单链表中所有数据DeleteList;⑤主函数mian(),功能是给出测试数据值,建立测试数据值的带头结点的单链表,调用PrintList函数、InsertList函数、DeleteList函数实现问题要求。
[详细设计] 见程序LinkList.c题2、约瑟夫环(Joseph)问题的一种描述是:编号1,2,┉,n的n个人按顺时针方向围坐一圈,每个人持有一个密码(正整数),一开始,任选一个正整数作为报数上线值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。
数据结构课程设计要求1.学生必须仔细阅读《数据结构》课程设计题目,认真主动完成课设的要求。
有问题及时主动与老师联系沟通。
2.学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况。
3.课程设计完成要求运行界面友好(有菜单)、操作方便、输出结果正确、可读性强,每种操作有验证性输出。
4.按规定时间提交课程设计报告,过期计为0分。
课程设计实习报告封面的书写格式课程设计课程:数据结构题目:专业班级:姓名:学号:设计时间:指导教师:课程设计报告的内容一、设计题目二、运行环境(软、硬件环境)三、算法设计的思想四、算法的流程图五、算法设计分析六、源代码七、运行结果分析八、收获及体会《数据结构》课程设计参考题课程设计题一:排序算法比较一、设计目的1.掌握各种排序的基本思想。
2.掌握各种排序方法的算法实现。
3.掌握各种排序方法的优劣分析及花费的时间的计算。
4.掌握各种排序方法所适应的不同场合。
二、设计内容和要求利用随机函数产生3000个随机整数,利用插入排序、起泡排序、选择排序、快速排序、堆排序、归并排序等排序方法进行排序,并统计每一种排序上机所花费的时间。
--------------------------------------课程设计题二:图的深度周游一、设计目的1.掌握图的邻接表存贮结构。
2.掌握堆栈的基本运算实现。
3.掌握图的邻接表的算法实现。
4.掌握图的深度优先搜索周游算法实现。
二、设计内容和要求对任意给定的图(顶点数和边数自定),建立它的邻接表并输出,然后利用堆栈的五种基本运算(清空堆栈、压栈、弹出、取栈顶元素、判栈空)实现图的深度优先搜索周游。
-------------------------------------- 课程设计题三:图的广度周游一、设计目的1.掌握图的邻接表存贮结构。
2.掌握队列的基本运算实现。
3.掌握图的邻接表的算法实现。
4.掌握图的广度优先搜索周游算法实现。
数据结构课程设计题目课程设计题一:线性表子系统一.设计目的:1.掌握线性表的特点2.掌握线性表的顺序存储结构和链式存储结构的基本运算3.掌握线性表的基本操作二.设计内容和要求:1.设计一个选择式菜单。
线性表子系统******************************************************* 1 ……建表** 2 ……插入** 3 ……删除** 4 ……显示** 5 ……查找** 6 ……求表长** 0 ……返回*******************************************************请选择菜单号(0…6):2.采用单链表创建线性表。
3.在线性表中实现插入、删除元素,显示线性表中所有元素,查找元素和求线性表长的基本操作。
课程设计题二:栈子系统一.设计目的:1.掌握栈的特点及其描述方法2.掌握链式存储结构实现一个栈3.掌握链栈的各种基本操作4.掌握栈的典型应用的算法二.设计内容和要求:1.设计一个选择式菜单。
栈子系统****************************************************** * 1 ……入栈* * 2 ……出栈* * 3 ……显示* * 4 ……数制转换* * 0 ……返回* ****************************************************** 请选择菜单号(0…4):2.设计一个整型数据元素的链栈。
3.编写入栈、出栈和显示栈中全部元素的程序。
4.编写一个把十进制数转换成八进制数的应用程序。
课程设计题三:队列子系统一.设计目的:1.掌握队列的特点及其描述方法2.掌握链式存储结构实现一个队列3.掌握队列的各种基本操作4.掌握队列简单应用的算法二.设计内容和要求:1.设计一个选择式菜单。
队列子系统******************************************************* 1 ……入队** 2 ……出队** 3 ……读队首元素** 4 ……显示** 5 ……报数问题** 0 ……退出*******************************************************请选择菜单号(0…5):2.设计一个整型数据元素的链队列。
数据结构课程设计题目以下7个题目任选其一。
1.排序算法比较利用随机函数产生30000个随机整数,利用插入排序、起泡排序、选择排序、快速排序、堆排序、归并排序等排序方法进行排序,并且(1)统计每一种排序上机所花费的时间。
(2)统计在完全正序,完全逆序情况下记录的比较次数和移动次数。
(3)比较的指标为关键字的比较次数和记录的移动次数(一次记录交换计为3次移动)。
(4)对结果作简单分析,包括对各组数据得出结果波动大小的解释。
2.图的深度遍历对任意给定的图(顶点数和边数自定),建立它的邻接表并输出,然后利用堆栈的五种基本运算(清空堆栈、压栈、弹出、取栈顶元素、判栈空)实现图的深度优先搜索遍历。
画出搜索顺序示意图。
3.图的广度遍历对任意给定的图(顶点数和边数自定),建立它的邻接表并输出,然后利用队列的五种基本运算(置空队列、进队、出队、取队头元素、判队空)实现图的广度优先搜索遍历。
画出搜索顺序示意图。
4.二叉树的遍历对任意给定的二叉树(顶点数自定)建立它的二叉链表存贮结构,并利用栈的五种基本运算(置空栈、进栈、出栈、取栈顶元素、判栈空)实现二叉树的先序、中序、后序三种遍历,输出三种遍历的结果。
画出搜索顺序示意图。
5.链表操作利用链表的插入运算建立线性链表,然后利用链表的查找、删除、计数、输出等运算反复实现链表的这些操作(插入、删除、查找、计数、输出单独写成函数的形式),并能在屏幕上输出操作前后的结果。
画出搜索顺序示意图。
6.一元稀疏多项式简单计数器(1)输入并建立多项式(2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……cn,en,其中n是多项式的项数,ci,ei分别为第i项的系数和指数。
序列按指数降序排列。
(3)多项式a和b相加,建立多项式a+b,输出相加的多项式。
(4)多项式a和b相减,建立多项式a-b,输出相减的多项式。
用带头结点的单链表存储多项式。
测试数据:(1)(2x+5x8-3.1x11)+(7-5x8+11x9)(2)(6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15)(3)(x+x2+x3)+0(4)(x+x3)-(-x-x-3)7.实现两个链表的合并基本功能要求:(1)建立两个链表A和B,链表元素个数分别为m和n个。
一、学生成绩管理(2人)
●问题描述:本例对学生的成绩管理做一个简单的模拟,用菜单选择方式完成下列
功能:登记学生成绩;查询学生成绩;插入学生成绩;删除学生成绩。
●基本要求:
1.算法输入:操作要求,学生信息
2.算法输出:操作结果
3.算法要点:把问题看成是对线性表的操作。
将学生成绩组织成顺序表,
则登记学生成绩即是建立顺序表操作;查询学生成绩、插入学生
成绩、删除学生成绩即是在顺序表中进行查找、插入和删除操作。
二、停车场管理(2人)
●问题描述:假设停车场只有一个可停放n辆汽车的狭长通道,且只有一
个大门可供汽车进出。
汽车在停车场内按车辆到达的先后顺序依次排列,如果车场内已经停满了汽车,则后来的汽车只能在门外的便道上等候。
一旦停车场内某辆车要离开时,在它之后开入的车辆必须先退出车场为
它让路,待该车辆开出大门后,为它让路的车辆再按原次序进入停车场。
每辆汽车在离开时都要依据停留时间交费(在便道上停留的时间不计
费)。
●基本要求:
1.汽车的输入信息格式为:到达/离去的标识,汽车牌照号码,到达/离
去的时间。
2.对于不合理的输入信息有适当的提示,例如要求离开的汽车没在停车
场或便道时有相应的提示。
●提示:以栈模拟停车场,用队列模拟便道,另设一个栈临时停放为让路
而从车场退出的车。
三、航空客运订票系统(4人)
●问题描述:业务主要包括查询航线和客票预订的信息、客票预订和办理
退票等。
●基本要求:
1.系统必须能存储以下数据信息:
航班信息:飞机抵达城市、航班号、飞机号、起降时间、票价、总座位数和剩余座位数、已订票的客户名单。
客户信息:客户姓名、证件号、座位号。
2.系统能实现的功能:
承办订票业务:根据客户提出的要求查询该航班信息,若满足要求,则为客户办理订票手续,输出座位号。
退票业务:根据客户提供的航班号和订票数量办理退票手续。
查询功能:查询航线信息(根据飞机的降落地点输出航班号、飞机好、起降时间、票价和剩余座位数)和客户预订信息(根据客户证件
号输出航班号、飞机号和座位号)
四、八皇后问题(2人)
●问题描述:八皇后问题,是一个古老而著名的问题,是回溯算法的典型
例题。
该问题是十九世纪著名的数学家高斯1850年提出:在8×8格的
国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能
处于同一行、同一列或同一斜线上。
●基本要求:统计总共有多少种摆法,并以一定方式输出摆好的格局。
五、简单个人图书管理系统(3人)
●问题描述:学生在学习过程中拥有很多书籍,对购买的书籍进行分类和
统计是一种良好的习惯。
如果用文件来存储相关书籍的各种信息,包括
书号、书名、作者名、价格和购买日期,辅之以程序对书籍信息进行统
计和查询会使书籍管理工作轻松有趣。
●基本要求:
1.在外存中用文件存储书籍相关信息
2.在内存中设计数据结构存储图书信息
3.能查找、删除、插入、更新
4.能按作者名对书籍进行排序并显示排序结果
六、简单个人电话号码查询系统(3人)
●问题描述:人们在日常生活中经常要查找某个人或某个单位的电话号
码,要求实现一个简单的个人电话号码查询系统,根据用户输入的信息
(例如姓名等)进行快速查询。
●基本要求:
1.在外存中用文件保存电话号码信息
2.在内存中设计数据结构存储电话号码信息
3.将电话号码信息按某一字段排序,以提高查找效率
4.提供插入、删除、修改等维护功能。
七、患者看病过程模拟(2人)
●问题描述:患者到医院看病的过程为先排队等候再看病治疗。
在排队的
过程中主要重复做两件事:一是患者到达诊室,将病历交给护士,排到
等候队列中候诊;二是护士从等候队列中取出下一个患者的病历,该患
者进入诊室看病。
设计算法模拟该过程。
●基本要求:
1.以菜单的形式供用户选择相应的操作
2.可以查看当前正在就诊的病人的信息
3.可以查询当前等候就诊的病人的信息
八、商品货架管理(2人)
●问题描述:商品货架可以看成一个栈,栈顶商品的生产日期最早,栈底
商品的生产日期最近。
上货时需要倒货架,以保证生产商品较近的商品
在较下的位置。
用栈和队列作为周转,实现上述管理过程。
九、校园导游程序(3人)
●问题描述:用无向图表示你所在学校的景点平面图,图中顶点表示主要
景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道
路,存放路径长度等消息。
●基本要求:
1.能查询各景点的相关信息
2.为来访客人提供景点的问路查询,即已知一个景点,查询到某
景点之间的一条最短路径及长度。
十、设备管理系统(3人)
●问题描述:学校拥有很多设备,对学校拥有的设备进行分类和统计是一
种良好的习惯。
如果用文件来存储相关设备的各种信息,包括设备号、设备名、制造商、价格和购买日期,辅之以程序对设备信息进行统计和查询会使设备管理工作轻松有趣。
基本要求:
5.在外存中用文件存储设备相关信息
6.在内存中设计数据结构存储图书信息
7.能查找、删除、插入、更新
8.能按设备名对设备进行排序并显示排序结果。