数据结构课程设计题目32855(146页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数据结构课程设计题目32855(146页).doc》由会员分享,可在线阅读,更多相关《数据结构课程设计题目32855(146页).doc(146页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-数据结构实践教程目 录第一部分 基础篇-第 142 页-第一章 线性表1.1 学生成绩管理1.1.1 项目简介1.1.2 设计思路1.1.3 数据结构1.1.4 程序清单1.1.5 运行结果1.2 考试报名管理1.2.1 项目简介1.2.2 设计思路1.2.3 数据结构1.2.4 程序清单1.2.5 运行结果1.3 约瑟夫生者死者游戏1.3.1 项目简介1.3.2 设计思路1.3.3 数据结构1.3.4 程序清单1.3.5 运行结果1.4 约瑟夫双向生死游戏1.4.1 项目简介1.4.2 设计思路1.4.3 数据结构1.4.4 程序清单1.4.5 运行结果第二章 栈和队列2.1 迷宫旅行游戏
2、2.1.1 项目简介2.1.2 知识要点2.1.3 设计思路2.1.4 程序清单2.1.5 运行结果2.2 八皇后问题2.1.1 项目简介2.1.2 知识要点2.1.3 设计思路2.1.4 程序清单2.1.5 运行结果2.3 停车场的停车管理2.1.1 项目简介2.1.2 知识要点2.1.3 设计思路2.1.4 程序清单2.1.5 运行结果第三章 串、数组和广义表3.1 单词检索统计程序3.1.1 项目简介3.1.2 设计思路3.1.3 数据结构3.1.4 程序清单3.1.5 运行结果3.2 Internet网络通路管理3.2.1 项目简介3.2.2 设计思路3.2.3 数据结构3.2.4 程
3、序清单3.2.5 运行结果第四章 树和二叉树4.1 家谱管理4.1.1 项目简介4.1.2 设计思路4.1.3 数据结构4.1.4 程序清单4.1.5 运行结果4.2 表达式求值问题4.2.1 项目简介4.2.2 设计思路4.2.3 数据结构4.2.4 程序清单4.2.5 运行结果4.4 图像压缩编码优化4.4.1 项目简介4.4.2 设计思路4.4.3 数据结构4.4.4 程序清单4.4.5 运行结果第五章 图5.1 公交路线管理5.1.1 项目简介5.1.2 设计思路5.1.3 数据结构5.1.4 程序清单5.1.5 运行结果5.2 导航最短路径查询5.2.1 项目简介5.2.2 设计思路
4、5.2.3 数据结构5.2.4 程序清单5.2.5 运行结果5.4 电网建设造价计算5.4.1 项目简介5.4.2 设计思路5.4.3 数据结构5.4.4 程序清单5.4.5 运行结果5.4 软件工程进度规划5.4.1 项目简介5.4.2 设计思路5.4.3 数据结构5.4.4 程序清单5.4.5 运行结果第二部分 综合篇1.1 景区旅游信息管理系统1.1.1 项目需求1.1.2 知识要点1.1.3 设计流程1.1.4 程序清单1.1.5 运行测试第一部分 基础篇第一章 线性表线性表是数据结构中最简单、最常用的一种线性结构,也是学习数据结构全部内容的基础,其掌握的好坏直接影响着后继知识的学习。
5、本章通过四个模拟项目来学习线性表的顺序和链式存储结构,首先通过使用有关数组的操作实现学生成绩管理,其次通过使用有关线性链表的操作实现考试报名管理,然后通过使用循环链表的操作实现约瑟夫生者死者游戏。1.1 学生成绩管理1.1.1 项目简介学生成绩管理是学校教务部门日常工作的重要组成部分,其处理信息量很大。本项目是对学生成绩管理的简单模拟,用菜单选择方式完成下列功能:输入学生数据;输出学生数据;学生数据查询;添加学生数据;修改学生数据;删除学生数据。1.1.2 设计思路本项目的实质是完成对学生成绩信息的建立、查找、插入、修改、删除等功能,可以首先定义项目的数据结构,然后将每个功能写成一个函数来完成
6、对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果。1.1.3 数据结构本项目的数据是一组学生的成绩信息,每条学生的成绩信息由学号、姓名和成绩组成,这组学生的成绩信息具有相同特性,属于同一数据对象,相邻数据元素之间存在序偶关系。由此可以看出,这些数据具有线性表中数据元素的性质,所以该系统的数据采用线性表来存储。顺序表是线性表的顺序存储结构,是指用一组连续的内存单元依次存放线性表的数据元素。在顺序存储结构下,逻辑关系相邻的两个元素在物理位置上也相邻,这是顺序表的特点。本项目可以采用顺序表的线性表顺序存储结构。若一个数据元素仅占一个存储单元,则其存储方式参见图1-1。从图1-1中可见,第
7、i个数据元素的地址为Loc(ai)=loc(a1)+(i-1)假设线性表中每个元素占用k个存储单元,那么在顺序表中,线性表的第i个元素的存储位置与第1个元素的存储位置的关系是Loc(ai)=loc(a1)+(i-1)*k这里Loc(ai)是第i个元素的存储位置,loc(a1)是第1个元素的存储位置,也称为线性表的基址。显然,顺序表便于进行随机访问,故线性表的顺序存储结构是一种随机存储结构。顺序表适宜于做查找这样的静态操作;顺序存储的优点是存储密度大,存储空间利用率高。缺点是插入或删除元素时不方便。由于C语言的数组类型也有随机存储的特点,一维数组的机内表示就是顺序结构。因此,可用C语言的一维数组
8、实现线性表的顺序存储。数组实现线性表的顺序存储的优点是可以随机存取表中任一元素O(1),存储空间使用紧凑;缺点是在插入,删除某一元素时,需要移动大量元素O(n),预先分配空间需按最大空间分配,利用不充分,表容量难以扩充。用结构体类型定义每个学生数据,故该数组中的每个数据的结构可描述为:typedef struct STUchar stuno10;/学号 char name10; /姓名float score;/成绩 ElemType;1.1.4 程序清单#include#include#include#include#define MaxListSize 20#define EQUAL 1ty
9、pedef struct STU char stuno 10; char name 10; float score;ElemType;class Listprivate: /线性表的数组表示 ElemType elemMaxListSize; int length; int MaxSize; public: /输入学生数据 void init(List *L,int ms); /删除所有学生数据 void DestroyList(List &L)free(&L); /将顺序表置为空表 void ClearList()length=0; /判断顺序表是否为空表 bool ListEmpty()
10、return length=0; /判断顺序表是否为满 bool ListFull() return length=MaxSize; /删除某个学生数据 bool ListDelete(int,ElemType &e); /遍历顺序表 void ListTraverse(); /返回顺序表的长度 int ListLength(); /学生数据查询 void GetElem(int,ElemType *); /修改学生数据 bool UpdateList(ElemType& e,ElemType); /添加学生数据 bool ListInsert(int,ElemType &); /对学生数据按
11、升序或降序输出 void printlist(int);void List:init(List *L,int ms)*L=(List *)malloc(sizeof(List); (*L)-length=0; (*L)-MaxSize=ms;int List:ListLength()return length;bool List:ListDelete(int mark,ElemType &e)int i,j; if(ListEmpty() return false; if(mark0) /删除表头元素 e=elem0; for(i=1; ilength; i+) elemi-1=elemi;
12、else /删除表尾元素 if(mark0) e=elemlength-1; else /删除值为e的元素 for(i=0;i=length) return false; else e=elemi; for(j=i+1;jlength;j+) elemj-1=elemj; length-; return true;void List:ListTraverse()for(int i=0;ilength;i+) coutsetw(8)elemi.name; coutsetw(10)elemi.stuno; coutsetw(9)elemi.age; coutsetw(8)elemi.scorena
13、me,e2-name) return false; if (strcmp(e1-stuno,e2-stuno) return false; if (e1-age!=e2-age) return false; if (e1-score!=e2-score) return false; return true;bool List:Less_EqualList(ElemType *e1,ElemType *e2) if(strcmp(e1-name,e2-name)=0) return true; else return false;bool List:LocateElem(ElemType e,i
14、nt type) int i; switch (type) case EQUAL:for(i=0;ilength;i+) if(EqualList(&elemi,&e) return true;break; default:break; return false;/修改学生数据bool List:UpdateList(ElemType& e,ElemType e1)for(int i=0;ilength;i+) if(strcmp(elemi.name,e.name)=0) elemi=e1;return true; return false;bool List:ListInsert(int
15、i,ElemType &e)ElemType *p,*q; if(ilength+1) return false; q=&elemi-1; for(p=&elemlength-1;p=q;-p) *(p+1)=*p; *q=e; +length; return true;/对学生成绩按升序或降序输出void List:printlist(int mark)int* b=new intlength; int i,k; cout 姓名 学号 成绩n; if(mark!=0) for(i=0; ilength;i+) bi=i; for(i=0; ilength;i+) k=i; for(int j
16、=i+1;jlength;j+) if(mark=1&elembj.scoreelembk.score) k=j; if(mark=-1&elembk.scoreelembj.score) k=j; if(k!=i) int x=bi;bi=bk;bk=x; for(int i=0;ilength;i+) coutsetw(8)elembi.name; coutsetw(10)elembi.stuno; coutsetw(9)elembi.age; coutsetw(8)elembi.scoreendl; else for(i=0;ilength;i+) coutsetw(8)elemi.na
17、me; coutsetw(10)elemi.stuno; coutsetw(9)elemi.age; coutsetw(8)elemi.scoreendl;void main() coutlinelist1m.cpp运行结果:n; ElemType e,e1,e2,e3,e4,e5,e6; List *La,*Lb,*Lc; int k; coutinit(&La,4); strcpy(e1.name,stu1); strcpy(e1.stuno,100001); e1.age=22; e1.score=88; La-ListInsert(1,e1); strcpy(e2.name,stu2)
18、; strcpy(e2.stuno,100002); e2.age=21; e2.score=79; La-ListInsert(2,e2); strcpy(e3.name,stu3); strcpy(e3.stuno,100003); e3.age=19; e3.score=87; La-ListInsert(3,e3); La-printlist(0); cout表La长:ListLength()init(&Lb,4); strcpy(e4.name,zmofun); strcpy(e4.stuno,100001); e4.age=20; e4.score=94; Lb-ListInser
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 题目 32855 146
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内