09电子信息2011年《数据结构》课程设计题目及要求
数据结构课程设计题目
数据结构课程设计题目一、题目背景在现代科技发展的背景下,数据结构作为计算机科学的重要基础课程,对于培养学生的编程思维、数据处理能力具有重要的作用。
本篇课程设计将围绕数据结构的实际应用,设计一个能够提升学生数据结构理论与实践能力的题目。
二、题目描述你需要设计一个软件,实现以下功能:能够记录学生信息并进行相关的数据操作。
具体要求如下:1. 学生信息包括:学生学号、姓名、性别、年龄、身高、体重等基本信息;2. 软件需要实现以下操作:a. 添加学生信息:可以手动添加每个学生的详细信息,并将其记录到数据库中;b. 删除学生信息:能够根据学号或姓名删除指定学生的信息;c. 修改学生信息:能够根据学号或姓名修改指定学生的信息;d. 查询学生信息:能够按照学号、姓名、性别、年龄等条件进行学生信息的查询,并将结果以列表形式展示;e. 统计学生信息:能够统计学生的平均年龄、平均身高、平均体重等统计数据,并展示在界面上;f. 数据导入导出:能够将学生信息导入/导出到文件或数据库中,实现数据的持久化存储。
三、设计思路为了实现上述功能,你可以采用以下的设计思路:1. 数据结构选择:可以使用链表、数组、树等数据结构存储学生信息,具体根据功能需求来选择合适的数据结构;2. 界面设计:考虑采用图形界面或者命令行界面,以提供方便的操作方式;3. 数据存储:可以使用文件、数据库等方式进行数据的存储和读取,以实现数据的持久化;4. 算法设计:在实现功能的过程中,需要考虑合适的算法来实现快速的查找、删除和修改等操作;5. 错误处理:在设计过程中,需要考虑各种可能的错误情况,并进行相应的处理和提示。
四、实施步骤为了顺利完成该课程设计,你可以按照以下步骤进行:1. 分析题目需求:仔细阅读以上题目描述,明确实现各项功能的具体要求;2. 设计数据结构:选择合适的数据结构来存储学生信息,考虑数据的增删改查等操作的效率;3. 设计算法:根据功能需求,设计相应的算法来实现各项操作;4. 实现界面:根据选择的界面方式,设计相应的图形界面或命令行交互界面;5. 实现功能:按照题目要求,逐个实现各项功能,并进行测试;6. 完善细节:对界面进行美化,完善用户交互体验,处理各种错误情况;7. 测试与调试:对整个软件进行全面的测试,并进行调试修复可能存在的问题;8. 编写报告:撰写课程设计报告,详细记录设计过程、实现方法、遇到的问题以及解决方案等。
2011《数据结构》课程设计
《数据结构》课程设计要求一、本课程的地位、目的《数据结构》课程设计是计算机科学技术专业集中实践性环节之一,是学习完《数据结构》课程后进行的一次全面的综合练习。
开设该课程设计的主要目的是:1. 使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。
2. 使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。
3. 使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。
二、课程设计的内容和要求根据课程设计的时间和个人能力,在老师的协助下选择适当难度的课程设计课题,用C/C++语言实现。
具体内容如下:1、需求分析以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定:输入的形式,输出的形式和值的范围;程序所能达到的功能;测试的数据。
2、概要设计说明程序中用到的所有抽象数据类型的定义,主程序的流程以及各程序模块之间的层次(调用)关系。
3、详细设计实现概要设计中定义的所有数据类型,对每个操作只需要写出伪代码算法,画出函数的调用关系图。
4、调试分析调试过程中遇到的问题并且是如何解决的以及对设计实现的回顾讨论和分析;算法的时空分析(包括基本操作和主要算法的时空复杂度的分析)和改进设想;经验和体会等5、用户使用说明说明用户如何使用你编写的程序,详细列出每一步的操作步骤。
6、测试结果列出测试结果,包括输入的数据和相应的输出数据。
7、附录详细注释的源程序。
具体要求如下:1. 巩固和加深对数据结构基本知识的理解,提高综合运用课程知识的能力。
2. 培养学生自学参考书籍,查阅手册、图表和文献资料的能力。
3. 通过实际课程设计,初步掌握简单软件的分析方法和设计方法。
4. 了解与课程有关的工程技术规范,能正确解释和分析实验结果。
三、与其它课程的联系先修课程为《C语言程序设计》和《数据结构》等。
四、课程设计报告撰写课程设计报告包括:封面、任务书、目录、正文和参考文献等。
数据结构课程设计2011
学生课程设计报告开课学院国际教育学院指导教师姓名佘名高学生姓名学生专业班级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.学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。
有问题及时主动通过各种方式与教师联系沟通。
2.学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时向教师汇报。
3.课程设计按照教学要求需要两周时间完成,两周中每天至少要上2小时的上机来调试C或C++语言设计的程序。
学院安排上机时间学生不得缺席。
二、上交相关内容要求上交的成果的内容必须由以下四个部分组成,缺一不可1.上交源程序:学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中);2.上交程序的说明文件:(保存在.txt中)在说明文档中应该写明上交程序所在的目录,上交程序的主程序文件名,如果需要安装,要有程序的安装使用说明;3.课程设计报告:(保存在word 文档中,文件名要求按照"姓名-学号-课程设计报告题目"起名,如文件名为"张三-001-二叉树动态演示".doc )按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;其中包括:a)需求分析:在该部分中叙述,每个模块的功能要求。
b)概要设计在此说明每个部分的算法设计说明(可以是描述每一个算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义。
c)详细设计各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)源程序要按照写程序的规则来编写。
要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。
d)调试分析测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。
e) 总结:总结可以包括: 课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容。
数据结构课程设计目录及正文
数据结构课程设计目录及正文一、课程设计目的数据结构是计算机科学中的一门重要基础课程,通过课程设计,旨在让学生更深入地理解和掌握数据结构的基本概念、原理和算法,并能够将其应用到实际问题的解决中。
培养学生的问题分析能力、算法设计能力、程序编写能力和调试能力,提高学生的综合素质和创新能力。
二、课程设计要求1、学生需独立完成课程设计任务,不得抄袭他人成果。
2、课程设计应具有清晰的结构和良好的可读性,代码规范,注释详细。
3、选择合适的数据结构和算法解决给定的问题,并对算法的时间复杂度和空间复杂度进行分析。
4、完成课程设计报告,包括问题描述、算法设计、程序实现、测试结果和总结等内容。
三、课程设计题目1、图书管理系统实现图书的添加、删除、查询、修改等功能。
按照图书的分类、作者、书名等进行排序和查找。
2、学生成绩管理系统录入学生的成绩信息,包括学号、姓名、课程名称、成绩等。
计算学生的平均成绩、总成绩,并按照成绩进行排序。
3、公交线路查询系统建立公交线路的网络模型。
实现站点之间的最短路径查询和换乘方案查询。
4、停车场管理系统模拟停车场的车辆进出管理。
计算停车费用,显示停车场的当前状态。
四、课程设计目录1、引言2、需求分析问题描述功能需求数据需求性能需求3、总体设计系统架构模块划分数据结构设计4、详细设计模块功能描述算法设计界面设计5、编码实现代码框架关键代码实现6、测试与调试测试用例测试结果调试过程7、总结课程设计的收获遇到的问题及解决方法对数据结构课程的进一步理解8、参考文献9、附录源程序代码五、正文内容(一)引言随着信息技术的不断发展,计算机在各个领域的应用越来越广泛。
数据结构作为计算机科学的重要基础,对于提高程序的效率和质量起着至关重要的作用。
本次课程设计旨在通过实际项目的开发,让学生将所学的数据结构知识运用到实践中,提高解决实际问题的能力。
(二)需求分析1、问题描述以图书管理系统为例,系统需要对图书馆中的图书进行有效的管理,包括图书的基本信息(书名、作者、出版社、出版日期、ISBN 号等)、图书的库存数量、借阅状态等。
《数据结构》课程设计题目
《数据结构》课程设计题目《数据结构》课程设计题目课程设计题一:学生成绩管理系统设计目的:1.2.3. 掌握线性链表的建立。
掌握线性链表的基本操作。
掌握查找的基本算法。
设计内容:利用线性链表实现学生成绩管理系统,具体功能:输入、输出、插入、删除、查找、追加、读入、显示、保存、拷贝、排序、索引、分类合计、退出,并能在屏幕上输出操作前后的结果。
设计要求:1.2.3.写出系统需求分析,并建模。
编程实现,界面友好。
输出操作前后的结果。
课程设计题二:停车场管理系统设计目的:1.2.3.4. 掌握栈和队列的建立。
掌握栈和队列的基本操作。
深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们。
加深对栈和队列的理解和认识。
设计内容:设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。
停车场内如有某辆车要开走,在他之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆在依原来的次序进场。
每辆车在离开停车场时,都应依据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟该停车场的管理。
设计要求:1. 以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
2. 每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车牌照号码以及到达或离去的时刻。
3. 对每一组输入数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费,功能可自己添加)。
数据结构课程设计题目及要求
数据结构课程设计题目及要求一、要求本次课程设计可以从以下的题目中任选其一,每个题目基本实现的要求是:有菜单功能有读写数据存盘功能成品应包括以下内容:程序设计书(Word格式)。
包括程序设计目标、问题描述、需求分析、概要设计、详细设计、源程序清单(要求格式整齐400行以上,要有注释说明)、软件说明书(给出软件如何使用,使用时的注意事项)、测试报告(每个函数的功能测试,输入条件,输出结果)和课程设计总结。
2、可执行程序源代码。
3、答辩时使用的ppt。
二、设计题目题目一:仓库管理系统(线性表应用)[问题描述]建立一个仓库管理程序,可以按顺序和货物名称查询仓库存储情况,也可以增加或删除货物以及建立新的仓库存储系统。
[实现提示]可以采用双向链表的存储结构,如可定义如下的存储结构:typedef struct dnode /*定义双向链表结构体*/{int number; /*货物编号*/char name[max]; /*货物名称*/int counter; /*货物数量*/struct dnode *prior,*next; /*定义两指针,分别指向其前驱和后继*/}dlnode;题目二:单位员工通讯录管理系统(线性表应用)[问题描述]为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。
其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。
[实现提示]可以采用单链表的存储结构,如可定义如下的存储结构:typedef struct { /*员工通讯信息的结构类型定义*/char num[5]; /*员工编号*/char name[10]; /*员工姓名*/char phone[15]; /*办公室电话号码*/char call[15]; /*手机号码*/}DataType;/*通讯录单链表的结点类型*/typedef struct node{ DataType data; /*结点的数据域*/struct node *next; /*结点的指针域*/}ListNode,*LinkList;题目三: 哈夫曼编码/译码系统(树应用)[问题描述]利用哈夫曼编码进行通信,可以压缩通信的数据量,提高传输效率,缩短信息的传输时间,还有一定的保密性。
《数据结构》课程设计题目及要求
一、关于本次课程设计1、每位同学限选1题,并到所在自然班的班长处登记,同一题不超过4人(一个班之内)。
2、课程设计成绩分为5级:优秀(5分)、良好(4分)、中等(3分)、及格(2分)、不及格(1分)。
3、题目有难易和工作量大小之分(具体见题目后的“星级”),为体现公平,请参见下表,请同学们结合自身情况选择题目。
4、课程设计报告和源代码严禁抄袭,报告要严格遵照“课程设计任务书”的要求来撰写,大致包含以下内容:①需求分析:叙述每个模块的功能性要求;②概要设计:阐述每个模块的算法设计(可以是描述算法的流程图)、使用的存储结构(如果指定存储结构请写出该存储结构的struct或typedef定义);③详细设计:各个算法的实现源代码(注意只写算法的源代码,完整的源代码放在附录里面)。
源代码必须正确缩进,关键性代码(如关键变量/ 参数/ 语句的意义、每个函数的功能等)要给出清楚的中文注释;④调试分析:需要测试数据的至少给出3组测试数据,记录每一组数据输出的结果;并用文字描述调试过程中遇到的问题(问题是哪些?问题如何得以解决?);⑤课设总结:课程设计过程的收获、遇到的问题、解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考等内容(严禁套话);⑥附录:完整的源代码(必须正确缩进)。
5、程序运行时,要有友好的说明界面和操作提示菜单(以英文文字显示即可),严禁出现“一运行屏幕一片黑”的情形;程序要有良好的容错性,当输入数据不合理或非法,程序必须能处理之并显示友好的提示信息而不能崩溃。
6、提交课程设计报告之前,将程序(EXE文件)和源代码(.C文件及其有关的数据文件)用Winrar打包成单一文件发至auts_hp@(不方便上网的同学可拷贝至U盘与报告一并提交),邮件标题(及其附件的文件名)如:计算机061—刘德华—马踏棋盘7、课程设计报告撰写完毕后,按要求装订,于09年1月5日晚7:00~9:00(如时间有变化则另行通知),交至B座4楼信息与计算科学教研室,逾期不候。
数据结构课程设计要求
课程设计要求
1.应用自己熟悉的语言Java,C/C++等语言编写程序,可读性要好;2.上机前充分准备,复习有关算法,写出计算步骤,反复检查,调试程序;
3.完成任务后写出课程设计报告;
4.课程设计的时间要求:上午:8:30—10:00;10:30--11:45;
下午:13:30--15:00;15:30--16:45;
5.上课期间请不要做与学习无关的事情,如:qq聊天,游戏,浏览无关网络,观看影视节目等等,若发现,经教育不改者,1
次直接扣10分!
6.总评成绩包括课程设计报告成绩(50分)和平时成绩(50分,包括出勤10分,上机表现40分);
7.独立完成,如有雷同,一律判零分!注意被雷同!
8.课程设计符合规范,如格式不对,直接判零分!
9.按时上交课程设计报告,如逾期按照规定扣分!
10.课程设计上交打印稿一份,从7月8日考试上交,最晚上交时间:7月10日,13:30-17:00,地点:机电楼B227。
如果没人,可将课程设计报告上交至机C308.
1。
数据结构课程设计题目及要求
实验一~实验四任选一题;实验五~实验九任选一题。
实验一运动会分数统计一、实验目的:(1)熟练掌握线性表的两种存储方式(2)掌握链表的操作和应用。
(3)掌握指针、结构体的应用(4)按照不同的学校,不同项目和不同的名次要求,产生各学校的成绩单、团体总分报表。
二、实验内容:【问题描述】参加运动会的n个学校编号为1~n。
比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。
由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。
写一个统计程序产生各种成绩单和得分报表。
【基本要求】产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。
【测试数据】对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。
【实现提示】可以假设m≤20,m≤30,w≤20,姓名长度不超过20个字符。
每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员姓名、校名(和成绩)。
【选作内容】允许用户指定某些项目可采取其他名次取法。
实验二停车场管理一、实验目的:(1)熟练掌握栈顺存和链存两种存储方式。
(2)掌握栈的基本操作及应用。
(3)以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
二、实验内容:【问题描述】设停车场是一个可停放n辆汽车的长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车信放在车场的最北端),若车场内已停满n辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场院,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
数据结构课程设计题目汇总及要求
数据结构课程设计题目课程设计题一:线性表子系统一.设计目的: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.设计一个整型数据元素的链队列。
数据结构课程设计题目
数据结构课程设计题⽬《数据结构》课程设计题⽬1. 排序算法的性能分析问题描述设计⼀个测试程序,⽐较⼏种内部排序算法的关键字⽐较次数和移动次数以取得直观感受。
基本要求(1)对冒泡排序、直接排序、选择排序、箱⼦排序、堆排序、快速排序及归并排序算法进⾏⽐较。
(2)待排序表的表长不⼩于100,表中数据随机产⽣,⾄少⽤5组不同数据作⽐较,⽐较指标:关键字参加⽐较次数和关键字的移动次数(关键字交换记为3次移动)。
(3)输出⽐较结果。
选做内容(1)对不同表长进⾏⽐较。
(2)验证各算法的稳定性。
(3)输出界⾯的优化。
2. 排序算法思想的可视化演⽰—1基本要求排序数据随机产⽣,针对随机案例,对冒泡排序、箱⼦排序、堆排序、归并算法,提供排序执⾏过程的动态图形演⽰。
3. 排序算法思想的可视化演⽰—2基本要求排序数据随机产⽣,针对随机案例,,对插⼊排序、选择排序、基数排序、快速排序算法,提供排序执⾏过程的动态图形演⽰。
4. 线性表的实现与分析基本要求①设计并实现线性表。
②线性表分别采取数组(公式化描述)、单链表、双向链表、间接寻址存储⽅式③针对随机产⽣的线性表实例,实现线性表的插⼊、删除、搜索操作动态演⽰(图形演⽰)。
5. 等价类实现及其应⽤问题描述:某⼯⼚有⼀台机器能够执⾏n个任务,任务i的释放时间为r i(是⼀个整数),最后期限为d i(也是整数)。
在该机上完成每个任务都需要⼀个单元的时间。
⼀种可⾏的调度⽅案是为每个任务分配相应的时间段,使得任务i的时间段正好位于释放时间和最后期限之间。
⼀个时间段不允许分配给多个任务。
基本要求:使⽤等价类实现以上机器调度问题。
等价类分别采取两种数据结构实现。
6. ⼀元稀疏多项式计算器问题描述设计⼀个⼀元稀疏多项式简单计算器。
基本要求⼀元稀疏多项式简单计算器的基本功能是:(1)输⼊并建⽴多项式;(2)输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,…,c n,e n,其中n是多项式的项数,c i,e i,分别是第i项的系数和指数,序列按指数降序排序;(3)多项式a和b相加,建⽴多项式a+b;(4)多项式a和b相减,建⽴多项式a-b;(5)计算多项式在x处的值;(6)计算器的仿真界⾯(选做)7. 长整数的代数计算问题描述应⽤线性数据结构解决长整数的计算问题。
信息092数据结构课程设计题目
信息092数据结构课程设计题目《数据结构课程设计》题目与要求一、课程设计时间为一周。
二、课程设计题目每组一题,每组最多可以有5个人。
三、学生成绩以优、良、中、及格和不及格5个等级评定。
(1)学生编写的实际软件和运行结果,占总成绩40%(2)设计报告,占总成绩30%(3)教师提问,占总成绩30%四、选题原则是数据结构算法实现及在具体问题中的应用。
可选择下列与实际应用紧密结合的较综合性的题目,也可自选(自选题必须通过教师认可)。
五、课程设计题目:【1】停车场管理[问题描述]设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。
在停车场内,汽车按到达的先后次序,由北向南依次排列(假设大门在最南端)。
若车场内已停满n辆车,则后来的汽车需在门外的便道上等候,当有车开走时,便道上的第一辆车即可开入。
当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门后,其它车辆再按原次序返回车场。
每辆车离开停车场时,应按其停留时间的长短交费(在便道上停留的时间不收费)。
[基本要求](1)要求以顺序栈模拟停车场,以链队列模拟便道。
(2)从终端读入汽车到达或离去的数据,每组数据包括三项:①是“到达”还是“离去”;②汽车牌照号码;③“到达”或“离去”的时刻。
与每组输入信息相应的输出信息为:如果是到达的车辆,则输出其在停车场中或便道上的位置;如果是离去的车辆,则输出其在停车场中停留的时间和应交的费用。
【2】文本格式化[ 问题描述]输入文件中含有待格式化(或成为待排版)的文本,它由多行文字组成,例如一篇英文文章。
每一行由一系列被一个或多个空格符所隔开的字(字是一行中不含空格符的最长(即任意一端都不能再扩展一个非空格符的进来的)子串,例如"good!"算是一个字。
)所组成,任何完整的字都没被分隔在两行(每行最后一个=字与下一行第一个字在逻辑上应该由空格分开),每行字符数不超过80。
数据结构课设题目及要求
《数据结构》课程设计题目题目—:一、课题名称:哈夫曼编码算法的实现二、课题来源:课程组自拟三、课题类型:综合型四、目的意义:1.了解哈夫曼算法的思路核心,掌握哈夫曼算法在压缩算法中的基本应用2.全面提高学生的程序设计、开发能力五、基本要求:1.任意性:用户输入任意的字符串,系统自动给出每个字符的哈夫曼编码和对应的哈夫曼树2.友好性:界面要友好,输入有提示,尽量展示人性化3.可读性:源程序代码清晰、有层次4.健壮性:用户输入非法数据时,系统要及时给出警告信息六、主要参考资料:[1] 严蔚敏等,《数据结构》,清华大学出版社,北京.2000[2] 谭浩强,《C语言程序设计》,清华大学出版社,北京.题目二:一、课题名称:排序算法的比较二、题目来源:课程组自拟三、课题类型:综合型四、目的意义:1.掌握各种排序算法(直接插入排序、冒泡排序、快速排序、简单选择排序)的思路核心,比较它们之间的优劣2.全面提高学生的程序设计、开发能力五、基本要求:1.任意性:系统首先生成1000个随机整数,然后分别用不同的排序方法对其进行升序排序,给出每种方法的比较次数或所用时间2.友好性:界面要友好,输入有提示,尽量展示人性化3.可读性:源程序代码清晰、有层次4.健壮性:用户输入非法数据时,系统要及时给出警告信息六、主要参考资料:[1] 严蔚敏等,《数据结构》,清华大学出版社,北京.2000[2] 谭浩强,《C语言程序设计》,清华大学出版社,北京.题目三:一、课题名称:最小生成树的构建二、课题来源:课程组自拟三、课题类型:综合型四、目的意义:1.了解最小生成树的构建算法,掌握高级语言的编程方法2.全面提高学生的程序设计、开发能力五、基本要求:1.任意性:用户任意给出—个网,系统画出该图,并给出对应的最小生成树2.友好性:界面要友好,输入有提示,尽量展示人性化3.可读性:源程序代码清晰、有层次4.健壮性:用户输入非法数据时,系统要及时给出警告信息六、主要参考资料:[1] 严蔚敏等,《数据结构》,清华大学出版社,北京.2000[2] 谭浩强,《C语言程序设计》,清华大学出版社,北京.七、评分标准:程序的正确性:40%程序的可读性:15%界面的友好性:15%课程设计报告:20%工作态度:10%八、课程设计报告的基本格式设计报告的基本内容至少包括封面、正文、参考文献三部分。
数据结构课程设计
《数据结构》课程设计——赫夫曼编码/译码器设计指导教师:班级:学号:姓名:数据结构课程设计任务书一、题目:赫夫曼编码/译码器设计二、目的:1、提高分析问题、解决问题的能力,进一步巩固数据结构各种原理与方法。
2、熟悉掌握一门计算机语言,可以进行数据算法的设计。
三、要求3.1总体要求1、要充分认识课程设计对培养自己的重要性,认真做好设计前的各项准备工作。
尤其是对编程软件的使用有基本的认识。
2、既要虚心接受老师的指导,又要充分发挥主观能动性。
结合课题,独立思考,努力钻研,勤于实践,勇于创新。
3、独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。
4、在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。
3.2实施要求1、理解赫夫曼编码/译码的确切意义。
2、独立进行方案的制定,系统结构设计要合理。
3、在程序开发时,则必须清楚主要实现函数的目的和作用,需要在程序书写时说明做适当的注释。
在写课设报告时,必须要将主要函数的功能和参数做详细的说明。
4、通过多组数据来检测该系统的稳定性和正确性。
3.3 课程设计报告的内容及要求在完成课题验收后,学生应在规定的时间内完成课程设计报告一份(不少于2000字)。
四、工作内容及工作计划:(一周,集中进行)一、实验目的♦需求分析:在该部分中叙述实现的功能要求;♦概要设计:在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义);♦详细设计各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)。
源程序要按照写程序的规则来编写。
要结构清晰,重点函数的重点变量、重点功能部分要加上清晰的程序注释二、实验原理三、实验步骤(1) 编码结果以文本方式存储在文件Codefile中。
(2) 用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“Q”,表示退出运行Quit。
2011年数据结构课程设计任务书
《数据结构》课程设计任务书班级:网11101班课程设计周数:1周指导老师:徐晓蓉一、课程设计的目的《数据结构》主要介绍一些最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。
数据结构是介于数学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于信息学、系统工程等各种领域。
学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。
通过课程设计可以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。
通过此次课程设计主要达到以下目的:⏹了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;⏹初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;⏹提高综合运用所学的理论知识和方法独立分析和解决问题的能力;⏹训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
二、课程设计的基本要求1.问题分析和任务定义:根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?(而不是怎么做?)限制条件是什么?2.逻辑设计:对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型。
逻辑设计的结果应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的功能说明),各个主要模块的算法,并画出模块之间的调用关系图;3.详细设计:定义相应的存储结构并写出各函数的伪码算法。
在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。
详细设计的结果是对数据结构和基本操作作出进一步的求精,写出数据存储结构的类型定义,写出函数形式的算法框架;4.程序编码:把详细设计的结果进一步求精为程序设计语言程序。
数据结构课程设计
数据结构课程设计一、课程设计目的:通过本次数据结构课程设计,让学生在学习数据结构的基础上,能够设计并实现一个较为完整的实际项目,提高学生的计算机编程与软件设计能力。
二、课程设计要求:1. 课程设计类别:选定的数据结构要求为图形数据结构。
2. 课程设计内容:在实际项目中,选取一种图形数据结构,设计并构建一个相应的系统。
3. 课程设计的具体要求:(1)需求分析:具体描述系统实现的需求、目的,提出解决方案。
包括系统的输入、输出及功能描述,功能流程图等。
(2)设计方案:选择适当的数据结构进行系统设计,建立好数据模型。
结合实际情况,合理地选择相关算法,确保程序的合理性和有效性。
同时,充分考虑代码的可读性、可扩展性和可维护性。
(3)程序实现:按照设计方案,编写程序,完成系统的核心代码。
在进行编码时,要注意代码的规范性,结构清晰,注释完整。
(4)系统测试:对实现的程序进行测试,包括单元测试、模块测试和整体测试,并记录测试结果和测试用例。
根据测试结果进行反复修改和优化,确保系统能够在各种情况下运行良好。
(5)成果展示:制作系统使用说明书,对完成的系统进行展示和演示,要求能够清晰地展示系统的界面和各种功能的实现过程。
三、课程设计任务:1. 选定数据结构并进行需求分析。
2.根据需求分析结果,设计出该系统的初始版本,提供该系统的整体框架及流程图。
3.建立数据结构,编写代码实现该系统。
4.对实现的系统进行单元测试、模块测试和整体测试。
5.根据测试结果进行调整,优化系统的功能,并完善设计方案和代码实现。
6.制作系统使用说明书,进行成果展示。
四、课程设计的评分标准:1. 选定数据结构并进行需求分析(10分)。
2.设计方案,提供该系统的整体框架及流程图(15分)。
3.建立数据结构,编写代码实现该系统(30分)。
4.对实现的系统进行单元测试、模块测试和整体测试,并记录测试结果和测试用例(15分)。
5.根据测试结果进行调整,优化系统的功能,并完善设计方案和代码实现(20分)。
数据结构课程设计题目和规范说明
《数据结构》课程设计规范一、课程设计教学目的1.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发。
二、基本要求1. 每位学生从所给的两个项目的备选题目中分别选择1题,独立完成,2. 在自身能力允许的范围内,鼓励学生多作题目,对完成规定2题基础上多作题的同学可以适当加分。
3. 课程设计时间:11~18周;上机时间:周一至周五下午3:00—6:00为规定时间,作为考勤依据,下午时间作为自由上机时间,机房免费开放;规定上机地点为实验中心。
4. 遵守课程设计的时间、过程要求;遵守实验室有关规定。
三、考核方法1.综合成绩(100分)设计报告(100分),2.最终,按照优(90-100分)、良(80-89分)、中(70-79分)、及格(60-69分)、不及格(60分以下)给出考核结论。
四、课程设计过程规范1.遵守课程设计的各项要求。
2.遵守实验中心的各项规定和要求。
3.随时接受指导教师的提问,自查任务完成后主动申请指导教师提问和审查。
五、课程设计报告的规范课程设计报告要求规范书写。
应当包括如下六个部分:1、设计目的与内容。
进行需求分析,确定每个模块的功能要求。
即根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么?(而不是怎么做?)2、算法的基本思想进行概要设计和详细设计。
说明用到的数据结构定义、主程序的流程及各程序模块之间的调用关系。
并用自然语言描述每个模块所涉及的算法。
3、测试数据列出对于给定的输入所产生的输出结果。
4、源程序及系统文件使用说明附上关键数据结构的定义及关键算法的源代码。
5、心得体会谈谈课程设计过程的收获、遇到问题及解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011年《数据结构》课程设计题目及基本要求如下:设计要求:1)学生必须仔细阅读《数据结构》课程设计方案,认真主动完成课设的要求。
有问题及时主动通过各种方式与教师联系沟通。
2)学生要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己的计划完成情况,及时的向教师汇报。
3)课程设计按照教学要求需要两周时间完成,两周中每天(按每周5天)至少要上3-4小时的机来调试C/C++语言/JA VA设计的程序。
4)以下各题至少需完成2题。
5)设计期间,要求严格遵守学校规章制度和实验室管理制度。
6)按指定时间上机,服从指导教师和实验室其他老师的安排。
7)上机前,应编写相应的程序,禁止无准备的上机。
每次上机,由老师点名,与最后演示以及设计报告一起,构成最终成绩。
第一次上机,填写老师手中的选题表。
非特殊情况,不得中间换题。
选题尽可能不要集中在某些题上,最后给分会结合题目的难度进行平衡。
上交相关内容要求1.上交源程序:学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中);2.上交程序的说明文件:(保存在.txt中)在说明文档中应该写明上交程序所在的目录,上交程序的主程序文件名,如果需要安装,要有程序的安装使用说明;3.课程设计报告:(上交纸质打印稿,同时将电子档保存在word 文档中上交,文件名要求按照"姓名-学号-课程设计报告"起名,如文件名为"张三-001-课程设计报告".doc )按照课程设计的具体要求建立的功能模块,每个模块要求按照如下几个内容认真完成;其中包括:a)封面(应有标题、专业、班级、姓名、学号和课程设计日期)b)课程设计题目声明自己选择的题目c)按自己选做的题目分章讨论(居中)标题如第**章******i.问题描述ii.需求分析:以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?同时明确规定:输入的形式和输出值的范围;输出的形式;程序所能够达到的功能;测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。
iii.概要设计:在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义。
iv.详细设计:每部分模块的设计,含数据结构的设计,算法的描述(流程图或PDL)。
各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)。
源程序要按照写程序的规则来编写。
要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。
v.测试分析:测试数据、测试过程、测试结果及评价vi.用户使用说明:说明如何使用你的程序,详细列出每一步操作步骤vii.本章小结:总结可以包括: 课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容viii.参考文献ix.附录部分附上关键数据结构的定义及关键算法的源代码。
4. 课设总结:总结可以包括: 课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容《数据结构》课程设计题目一、试设计一个航空客运订票系统。
基本要求如下:1、每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需数量)。
2、系统能实现的操作和功能如下:1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少余订票额,则需重新询问客户要求。
若需要,可登记排队候补;3)承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
3、实现提示:两个客户名单可分别由线性表和队列实现。
为查找方便,已订票客户的线性表应按客户姓名有序,并且,为了插入和删除方便,应以链表作为存储结构。
由于预约人数无法预计,队列也应以链表作为存储结构。
二、校园导游咨询(为来访的客人提供各种信息服务)1、基本要求:1)设计中南大学校园平面图,有三个校区和三所附属医院,在这些校区和医院内选10个以上的建筑物、办公室、宿舍等地名。
以图中顶点表示校园内各地名,存放地名名称、代号、简介等信息;以边表示路径,存放路径长度等有关信息。
2)为来访客人提供图中任意地名相关信息的查询。
3)为来访客人提供任意地名的问路查询,即查询任意两个地名之间的一条最短路径。
2、实现提示:一般情况下,校园的道路是双向通行的,可设计校园平面图是一个无向网。
顶点和边均含有相关信息。
三、停车场管理问题[问题描述]设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。
停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆的次序。
编制一程序模拟该停车场的管理。
[实现要求]要求程序输出每辆车到达后的停车位置(停车场或便道上),以及某辆车离开停车场时应交纳的费用和它在停车场内停留的时间。
[实现提示]汽车的模拟输入信息格式可以是:(到达/离去,汽车牌照号码,到达/离去的时刻)。
例如,(…A‟,,1,5)表示1号牌照车在5这个时刻到达,而(…D‟,,5,20)表示5号牌照车在20这个时刻离去。
整个程序可以在输入信息为(…E‟,0,0)时结束。
本题可用栈和队列来实现。
四、全国交通咨询模拟【问题描述】处于对不同目的的旅客对交通工具有不同的要求。
例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则希望旅费尽可能省,而老年旅客则要求中转次数最少。
编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。
【基本要求】(1)提供对城市信息进行编辑(如:添加或删除)的功能。
(2)城市之间有两种交通工具:火车和飞机。
提供对列车时刻表和飞机航班进行编辑(增设或删除)的功能。
(3)提供两种最优决策:最快到达或最省钱到达。
全程只考虑一种交通工具。
(4)旅途中耗费的总时间应该包括中转站的等候时间。
(5)咨询以用户和计算机的对话方式进行。
由用户输入起始站、终点站、最优决策原则和交通工具,输出信息:最快需要多长时间才能到达或者最少需要多少旅费才能到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到何地。
【测试数据】【实现提示】(1)对全国城市交通图和班车时刻表及飞机航班表的编辑,应该提供文件形式输入和键盘输入两种方式。
飞机航班表的信息应包括:起始站的出发时间、终点站的到达时间和票价;列车时刻表则需根据交通图给出各个路段的详细信息,例如:对于从北京到上海的火车,需给出北京至天津、天津至徐州及徐州至各段的出发时间、到达时间和票价信息。
(2)以邻接表作交通图的存储结构,表示边的结点内除含有邻接点的信息外,包括交通工具、路程中消耗的时间和花费以及出发和到达的时间等多项属性。
五、压缩器/解压器【问题描述】为了节省存储空间,常常需要把文本文件采用压缩编码的方式储存。
例如:一个包含1000个x的字符串和2000个y的字符串的文本文件在不压缩时占用的空间为3002字节(每个x或每个y占用一个字节,两个字节用来表示串的结尾)。
同样是这个文件,采用游程长度编码(run-length coding),可以存储为字符串1000x2000y,仅为10个字母,占用12个字节。
若采用二进制表示游程长度(1000和2000)可以进一步节约空间。
如果每个游程长度占用2个字节,则可以表示的最大游程长度为2*pow(16),这样,上例中的字符串只需要用8个字节来存储。
当要读取编码文件时,需要对其进行解码。
由压缩器(compressor)对文件进行编码,由解压器(decompressor)进行解码。
①(1)长度-游程编码的压缩/解压;+(2)LZW压缩/解压(散列);②(1)长度-游程编码的压缩/解压;+(3)霍夫曼编码压缩/解压(霍夫曼树) 【基本要求】要求选用二种压缩/解压策略实现压缩/解压器[(1)为必选]。
输入的为本文文件(.txt),输出的为一种自定义的文件(.nz)。
考虑当构成文本的字符集合为{a,b,c,……,z,0,1,2,…9}时,请用实例测试你的压缩/解压器。
你的压缩器会不会出现抖动?(压缩后的文本比原来的还要大)。
扩充构成文本的字符集合以便使它适应更一般的情况。
【实现提示】LZW:由Lempel、Ziv和Welch这三位科学家所开发的技术。
该方法把文本的字符串映射为编码,首先,为该文本中所有可能出现的字母分别分配一个代码。
例如:要压缩的对象是aaabbbbbbbaabaaba,由a和b组成。
为a分配代码0,为b 分配代码1。
字符串和编码的关系被存储在字典中。
其相应的代码。
若输入文件的下一个字符为c,则为pc分配下一个代码,并插入字典,这种策略称为LZW规则。
相反,在解压时,编码表由压缩文件重新构造,LZW原则使这种重建成为可能。
如上例子,压缩时,文件中第一个在字典中出现的最长前缀是a, 输出其编码0,然后为字符串aa分配代码2,并插入到字典中。
余下的字符串在字典中出现的最长前缀是aa,输出aa的对应代码2,同时为字符串aab分配代码3并将其插入到字典中。
依次类推,由此,输出0214537解压时,要输入代码,然后用代码所表示的文本来替换这些代码。
代码到文本的映射可按下面的方法重建:首先把分配给单一字母的代码插入到字典中。
象前面一样,字典的入口为key-code对。
然而此时是根据给定的代码(key)去寻找相应的入口(而不是根据文本Code)。
压缩文件中的第一个代码对应于单一的字母,因此可以由该字母代替。
对于压缩文件中的其他代码p,要考虑两种情况:1)在字典中;2)不在字典中。