数据结构课程设计任务书及模板.docx
《数据结构课程设计任务书及模板.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计任务书及模板.docx(10页珍藏版)》请在冰豆网上搜索。
数据结构课程设计任务书及模板
湖南工业大学
课程设计
资料袋
商学院学院(系、部)2016~2017学年第1学期
课程名称数据结构—C语言描述指导教师邓晓军职称教授
学生姓名专业班级学号
题目
成绩起止日期2016年12月12日~2016年12月16日
目录清单
序号
材料名称
资料数量
备注
1
数据结构设计说明书
1
2
3
张
4
5
6
湖南工业大学
课程设计任务书
2016—2017学年第1学期
商学院学院(系、部)信息管理专业1501-1502班级
课程名称:
数据结构(C语言程序描述)
设计题目:
第2章—第7章课后算法设计题任选2题
完成期限:
自2016年12月12日至2016年12月16日共1周
内
容
及
任
务
根据教材《数据结构(C语言版)》第2章至第7章自选2个及以上习题(不能选同一章)作为课程设计题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用。
主要任务:
1、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。
前期准备工作完备与否直接影响到后序上机调试工作的效率。
在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。
2、设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。
3、程序设计语言推荐使用C/C++,程序书写规范,源程序需加必要的注释;
4、每位同学需提交可独立运行的程序;
进
度
安
排
起止日期
工作内容
2016.12.12-12.13
选好课设题目,并完成程序框架设计,各类函数及函数之间的链接和转换
2016.12.14-12.15
程序的实现及调试
2016.12.16
程序的完善及资料整理
主
要
参
考
资
料
《数据结构及应用C语言描述》,沈华等编著,机械工业出版社
《数据结构C语言版》,严蔚敏等编著,清华大学出版社
指导教师(签字):
年月日
系(教研室)主任(签字):
年月日
数据结构课程设计
设计说明书
(题目)
起止日期:
2016年12月12日至2016年12月16日
学生姓名
曹爽
班级
信管1502
学号
15415400233
成绩
指导教师(签字)
计算机学院(部)
2016年12月16日
1课程设计内容介绍
1.1题目一
将两个递增的有序链表合并为一个递增的有序链表。
要求结果链表仍使用原来两个链表的存储空间,不另外占用其它的存储空间。
表中不允许有重复的数据。
1.2题目二
设计一个算法,求图G中距离顶点v的最短路径长度最大的一个顶点,设v可达其余各个顶点。
2数据结构的设计
2.1题目一逻辑结构和存储结构设计
逻辑结构:
线性结构
存储结构:
链式结构
假设头指针为LA和LB的单链表分别为线性表LA和LB的存储结构,现在要归并LA和LB得到单链表LC。
但是链表节点之间的关系是通过指针指向建立起来的,所以要用链表进行合并不需要另外开辟储存空间,可以直接利用原来两个表的存储空间,合并过程中只需把LA和LB两个表中的节点重新进行链接即可。
合并后的新表使用头指针Lc指向,pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,依次摘取其中较小者重新链接在Lc表的最后。
如果两个表中的元素相等,只摘取La表中的元素,删除Lb表中的元素,这样确保合并后表中无重复的元素。
当一个表到达表尾结点,为空时,将非空表的剩余元素直接链接在Lc表的最后。
2.2题目二逻辑结构和存储结构设计
3功能模块(或算法)描述
3.1题目一
将两个递增的有序链表合并为一个递增的有序链表。
要求结果链表仍使用原来两个链表的存储空间,不另外占用其它的存储空间。
表中不允许有重复的数据。
3.1.1流程图
1.指针Pa和Pb初始化,分别指向LA和LB的第一个节点。
2.Lc的指针取值为LA的头结点。
3.指针Pc初始化,指向Lc的头结点。
4.当指针Pa和Pb均未到达相应表尾时,则依次比较Pa和Pb所指向的元素值,从LA和LB中摘取元素值较小的节点插入到LC的最后。
5.将非空表的剩余段插入到Pc所指结点之后。
6.释放LB的头结点。
3.1.2主要功能模块
cls()清屏功能
3.3搜索
date_sc(intshibie)按日期搜索
name_sc(intshibie)按书名搜索
3.4修改
shuru_sc(inti)输入、修改图书信息
3.5编辑
e_insert()插入新的图书信息
e_delete()删除图书信息
e_update()修改图书信息
3.6显示所有图书
display()输出全部图书
all_display()输出全部图书(和display函数一起用)
shuchu(intn)显示所有信息
3.7排序
date_sort()按日期排序
3.8统计
statistic()统计每类书籍的数量,和display函数一起用
3.9文件操作
xieru_sc(intshibie)将内存中的数据写入文件
f_open()打开文件和新建文件(关闭文件直接用fclose函数即可,所以不用另外写函数)
4.1主菜单
4.2编辑文件
4.3显示所有书籍
Xxxxxxxxxxxxxxxxxxxxxxx
参考文献
[1]朱站立.数据结构---使用C语言(第3版).西安:
西安交通大学出版社,2004.
[2] 朱站立,张选平等.数据结构---使用C语言典型题解与上机实验指导.西安:
西安交通大学出版社,2007.
附源代码
#include
#include
#include
#include
#include
#defineMaxSize200//定义数组最大值为200
structBookType//结构体类型为BookType
{
intyear;//定义购买日期年
intmonth;//定义购买日期月
intday;//定义购买日期天
charname[20];//定义书名
charauthor[8];//定义作者
inttype;//定义类型号码
floatprice;//定义价格
}a[MaxSize],zancun[MaxSize],tihuan[MaxSize],b[MaxSize],c[MaxSize];
//ListGet用zancun数组和b数组,ListInsert用a数组,排序操作用tihuan和zancun数组,c数组用于删除操作
intdate[MaxSize];//用来相加年月日排序时候用
typedefBookTypeDataType;//DataType的类型为BookType类型的结构体
#include"LinList.h"//引用单链表头文件
FILE*fp;//定义文件指针
SLNode*head;//定义单链表的头结点
//===================================================================
voidmenu();//主菜单
voidend();//结束界面
voidcls();//清屏
voidsearch(intshibie);//搜索界面
voiddate_sc(intshibie);//日期搜索
voidname_sc(intshibie);//书名搜索
voidauthor_sc(intshibie);//作者搜索
voidtype_sc(intshibie);//类型搜索
voidprice_sc(intshibie);//价格搜索
voidshuru_sc(inti);//修改文件信息操作--修改信息
voidxieru_sc(intshibie);//修改文件信息操作--将修改的信息写入文件
intf_open();//打开文件
voidedit();//编辑图书信息——界面
voide_insert();//插入图书
voide_delete();//删除图书
voide_update();//修改原来存在图书的信息
voiddisplay();//输出全部数据
voidall_display();//输出全部图书
voidsort();//分类界面包括日期排序、书名排序、作者、编号排序、价格排序,如果某一项相同则继续按书名排序
voiddate_sort();//日期排序
voidname_sort();//书名排序
voidauthor_sort();//作者排序
voidtype_sort();//类型排序
voidprice_sort();//价格排序
voidpaixu(intj);//进行赋值和替换的操作
voidshuchu(intn);//显示所有信息
voidstatistic();//统计每类书籍的数量,显示统计结果
//===================================================================
voidmain()//主函数
{menu();}
//===================================================================
=================================