收藏 分享(赏)

C语言版数据结构课程设计.doc

上传人:ysd1539 文档编号:7099507 上传时间:2019-05-05 格式:DOC 页数:18 大小:139KB
下载 相关 举报
C语言版数据结构课程设计.doc_第1页
第1页 / 共18页
C语言版数据结构课程设计.doc_第2页
第2页 / 共18页
C语言版数据结构课程设计.doc_第3页
第3页 / 共18页
C语言版数据结构课程设计.doc_第4页
第4页 / 共18页
C语言版数据结构课程设计.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、I1数据结构课程设计资 料 袋计算机与通信 学院(系、部)2009 2010 学年第 二 学期 课程名称 数据结构 指导教师 职称 博士 学生姓名 专业班级 通信工程 学号 题 目 编制车厢调度的程序 成 绩 起止日期 2010 年 6 月 28 日 2010 年 7 月 10 日目 录 清 单序号 材 料 名 称 资料数量 备 注1 课程设计任务书 12 课程设计说明书 13 课程设计图纸 1 张456II2课程设计任务书2009 2010 学年第 二 学期计算机与通信 学院(系、部) 通信工程 专业 092 班级课程名称: 数据结构 设计题目: 编制一个车厢调度的程序 完成期限:自 201

2、0 年 6 月 28 日至 2010 年 7 月 10 日共 一 周内容及任务一、设计的主要技术参数使用栈机制模拟迷宫的寻路过程, 图的 DFS 自动生成随机迷宫地图。二、设计任务使用 C 语言实现各个模块的功能。三、设计工作量王灿阳负责对栈的基本操作,我实现车厢的调度的进和出,以及状态的变化。起止日期 工作内容2010-6-28 设计本程序思路2010-6-30 实现子程序模块函数2010-7-6将子程序和主程序构建成完整的 C 源程序,并且进行相关编译调试进度安排2010-7-7 数据测试、形成文档指 导 教 师 (签字): 年 月 日系 ( 教 研 室 ) 主 任 ( 签字): 年 月

3、日IIIIII数据结构设 计 说 明 书数据结构课程设计编制一个车厢调度的程序起止日期: 2010 年 6 月 28 日 至 2010 年 7 月 10 日学 生 姓 名班 级 通 信 092 班学 号成 绩指 导 教 师 (签 字 )IVIV计算机与通信学院(部)年 月 日湖南工业大学课程设计情况分析表课程设计名称 数据结构 设计周数 17 周学院(部) 计算机与通信学院 系(教研室) 通信工程系指导教师 文志诚学生专业、班级 通信工程 0901选题车厢调度优 良 中 及格 不及格学生数成绩分布百分比学生课程设计存在的主要问题改进措施及建议指导教师(签字): 年 月 日系(教研室)主任(签字

4、): 年 月 日备注:本表在课程设计完成后由指导教师填写,与课程设计资料一起存档。 VV目录1. 题目 VI2. 概要设计 VII3. 功能函数设计 XI4. 调试分 析 XIX5. 用户手册 XXI6. 测试结 果 XIVVIVI7. 附录 完整的程序清单 XV 一、题目:编制一个车厢调度的程序.扩展:增加清屏函数;;增选择的功能;可显示所有的运行结果.需求分析( 1 )在教材书 3.1.2 节中提供的栈的顺序存储结构 SqStack 之上实现栈的基本操作,即实现栈类型。( 2 )程序对任何栈的任何存取(即更改、读取和状态判别等操作)必须借助于基本操作执行。( 3 ) 用户可以自己输入调度的

5、大小 , 然后由程序自动生成结果.二、概要设计1. 设定栈的抽象数据类型定义 :ADT Stack 数据对象 : D=ai|aiADT MazeType , i = 0,1,2n , n0数据关系 : R1= | ai-1,ai D,i=2,n 基本操作 :InitStack(SqStack 2. 设定车厢调度的抽象数据类型ADT MazeType数据对象 : D=ai,j|ai,j ,#、*,0|ai-1,j,ai,jD,i=1,m+1,j=0,n+1N=|ai-1,j,ai,jD,i=1,m+1,j=0,n+1基本操作 :void process(int pos,int path,int

6、curp)/当前处理位置 pos 的元素 定一两个变量 if(pos#include“stdio.h“#include #define MaxLen 100 struct Stack_node int dataMaxLen; int top; s; /定义一个栈指针 int n;/定义输入序列总个数 /-栈的基本操作-void Initstack() s.top=-1; void push(int q)/元素 n 进栈 XX s.top+; s.datas.top=q; int pop()/出栈 int temp; temp=s.datas.top; s.top-; return temp;

7、int Emptys()/判断栈空 if(s.top=-1) return 1; else return 0; -实现文件(部分)-本部分是主控函数,函数的调用以及菜单的选择:main.cpp 主函数void main() int pathMaxLen;int m;char ch;printf(“ nnn - n“); printf(“ | n“); printf(“ |数据结构课程设计|n“); printf(“ | |n“); printf(“ | 铁路调度站模拟 |n“); printf(“ | |n“); printf(“ | 09 级通信工程|n“); printf(“ | n“);

8、 printf(“ -n“); printf(“ 按任意键继续 n“); if(ch=getch();do / system(“cls“); /停顿printf(“nnn * n“); printf(“ * 1:请输入火车的长度: *n“); XIXIprintf(“ * *n“); printf(“ * 2:输出所有可能序列: *n“);printf(“ * *n“); printf(“ * 3:退出本程序: *n“);printf(“ * n“); printf(“ 请你根据需要选择序号n“); scanf(“%d“,if(m=1)printf(“请输入车厢长度:n“); scanf(“%

9、d“, printf(“车厢长度已输入!n“); getchar();/停止getchar();if(m=2) Initstack(); push(1); printf(“所有输出序列:n“); process(1,path,0); /从 1 开始,递归处理所有元素getchar();/停止getchar();if(m=3)printf(“欢迎退出!n“);printf(“n“);if(m!=1getchar();/停止getchar(); while(m!=3);四:调试分析1. 本次作业比较简单 , 只是刚开始写的代码中虽然用到了递归去求解函数,但是不能很好的输完整结果,但是栈的相关操作是

10、正确的,后来发现是由于XIIXII调度递归算法中元素出栈后没有继续让其进栈。经改后恢复正常。2. 在设计调度初始化函数的时候,参数的传递出现错误,主要是对指针和引用的理解出现混淆,通过查阅相关资料, 弄清楚了两者之间的区别,指针是用于指向一个变量的地址,而引用只是对一个已存在变量的一个重命名.3.用 printf 函数输出标志信息跟踪函数调用,收到了显著的效果,大大提高了调 试效率, 有利于以后的代码调试.3 使用了小部分的 win32 API,发现使用局部句柄时,调用的 winAPI 不能正常运行,改成全局后问题解决.4. 在实现调度功能时发现,每次调用 system(“cls“)函数时都进

11、行清屏操作,屏幕只出现当前的操作目标,一目了然。用户进入系统只需按要求进行,操作时简洁清晰.代码中的主要算法:/输出一种可能的 for(i=0;i#include“windows.h“ #define MaxLen 100 struct snode XVIXVIint dataMaxLen; int top; s; /定义一个栈指针 int n;/定义输入序列总个数 void Initstack() s.top=-1; void push(int q)/元素 n 进栈 s.top+; s.datas.top=q; int pop()/出栈 int temp; temp=s.datas.top; s.top-; return temp; int Emptys()/判断栈空 if(s.top=-1) return 1; else return 0; /* 每次调用求值阶段包含两重递归,只有全部返回,才表示本 pos 处理完,可以对上一个元素求值,process 就是找出当前元素进栈后所有可能的操作,即在当前元素进栈后各种情况下, 包括不出栈,立即出栈,出栈后继续出栈情况(出栈递归)下,继续处理下一个元素(入栈递归) */ void process(int pos,int path,int curp)/当前处理位置 pos 的元素 int m,i; if(pos,,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报