学院:班级:姓名:
学号:题目: 车厢调度。
班级姓名: 学号:
日期:一、 需求分析。
1) 首先教科书3.1.2节中提供栈的顺序存储结构sqstack之上实现栈的基本操作,即实现栈类型,程序对栈的任何存取必须借助基本操作进行,假设停在铁路调度站入口处的车厢序列为1,2,3 n。
设计一个程序,求出所有可能由此输出的长度为n的车厢序列。
2) 测试数据。
分别取n=1,2,3,4
3) 实现提示。
在操作过程中任何状态下都有两种可能的操作:出和人。每个状态下处理问题的方法都是相同的,这说明问题本身具有天然的递归性,可以考虑递归算法实现。
输入序列可以仅有一对整形变量表示,即给出序列头和尾编号。输出序列用栈实现是方便的,自底至顶顺序印出栈元素的值。
4) 选做内容。
利用双栈存储结构实现调度站的和输出序列这两个站的共享。
对于每个输出序列印出操作序列或状态变化过程。
二、概要设计。
设定栈的抽象数据类型定义:
adt stack
数据关系:r1=
基本操作:initstack(&s)
初始条件: 栈已存在。
操作结果:构造一个空栈。
destroystack(&s)
初始条件:栈已存在。
操作结果:销毁栈。
clearstack(&s)
初始条件:栈已存在。
操作结果:将栈清空。
stacklength(&s)
初始条件:栈已存在。
操作结果:返回栈的长度。
stackempty(&s)
初始条件:栈已存在。
操作结果:判空。
getop(&s,e)
初始条件:栈已存在。
操作结果:返回顶元素。
push(&s,e)
初始条件:栈已存在。
操作结果:插入元素。
pop(&s,&e)
初始条件:栈已存在。
操作结果:删除栈顶元素,并返回其值。
三、 详细设计。
#include<>
#include<>
struct sqstack
int data[10];
int top;
*s; void initstack()
s=(struct sqstack *)malloc(sizeof(struct sqstack));
s->top=0;
void push(int m)
s->data[s->top]=m;
(s->top)++
int pop()
int a;
a=s->data[--s->top)];
return a;
int stackempty(struct sqstack*s)
if(s->top==0)return 1;
else return 0;
void f(int seri,int pri[10],int i,int n)
int m,j;
if(seri
if(!stackempty(s))
if(seri==n&&stackempty(s))
void main()
int pri[10],n;
printf("请输入最大车厢序列编号:")
scanf("%d",&n);
initstack();
push(1);
f(1,pri,0,n);
四、调试分析。
主要实现出栈与压栈的操作,算法部分即对递归的深层理解,如何进行递。
归调用,结果如何返回上层。
五、测试结果:
n=1n=2
n=3n=4
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...
数据结构课程设计
数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...
数据结构课程设计
班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...