实验2栈和队列

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

江南大学通信与控制工程学院标准实验报告

(实验)课程名称:计算机软件技术基础实验名称:栈和队列

班级:自动化

姓名:李玉书

学号:0704090303

指导教师:卢先领

江南大学通信与控制学院

江南大学

实验报告

学生姓名:曹劼学号:0704080123

实验地点:信控机房实验时间:90分钟

一、实验室名称:信控学院计算中心

二、实验项目名称:栈和队列

三、实验学时:4学时

四、实验原理:

用栈实现顺序表的操作

五、实验目的:

1、掌握栈的数据类型描述,栈的特点及栈的存储结构;

2掌握栈的基本运算及应用。

六、实验内容:

设车辆厂生产了硬座车厢和软座车厢共N节,混合在一起要求用顺序栈的5种运算使所有的硬座车厢排列到软座车厢前面。请完善主函数实现上述功能。

七、实验器材(设备、元器件):

计算机

八、实验步骤:

1、输入示例程序

2、构建按序插入函数实现算法

3、用C语言实现该算法

4、与源程序合并,编译,调试

5、测试,查错,修改

6、生成可执行文件,通过综合测试,完成实验

九、实验数据及结果分析:

测试用例

车厢数5,初始顺序SSHSH 测试结果

十、实验结论:

该程序能够判断是否输入错误,并且能够对正确情况下进行栈的数据处理,但是占用了额外的储存量,并且计算次数过多。并且函数不具有通用性。

十一对本实验过程及方法、手段的改进建议:

完善了主函数的功能,使其能够达到排序的目的,但是浪费了一个数组的空间量和运算次数多。

附:源程序

报告评分:

#include

#include

#define elemtype char

const int maxlen=20;

typedef struct

{

elemtype stack[maxlen];

int top;

}seqstack;

//栈初始化

void inistack(seqstack &s)

{

s.top=-1;

}

//进栈

void push(seqstack &s,elemtype x)

{

if(s.top==maxlen-1)cout<<"overflow";

else

{

s.top++;

s.stack[s.top]=x;

}

}

//出栈

void pop(seqstack &s)

{

if(s.top==-1)cout<<"underflow";

else

{

s.top--;

}

}

//取栈顶元素

elemtype getton(seqstack s)

{

if(s.top==-1){cout<<"underflow";return 0;}

else return s.stack[s.top];

}

//判栈空

int empty(seqstack s)

{

if(s.top==-1)return 1;

else return 0;

}

//打印栈内容

void prtstack(seqstack &s)

{

int i;

for(i=0;i<=s.top;i++)cout<

}

//按序入栈

void sortstack(seqstack &s,int &n)

{

elemtype x;

while(0==n--||maxlen-1==s.top)return; //n次后或堆栈满时,递归结束while(!(('H'==(x=getchar()))||('S'==x))); //接受H或S,过滤无关量

if('H'==x)push(s,x); //H优先压栈

sortstack(s,n);

if('S'==x)push(s,x); //H全入栈后,S入栈

}

void main(void)

{

int n,i;

elemtype x;

seqstack s;

inistack(s);

cout<<"请输入车厢数";

cin>>n;

cout<<"请输入"<

prtstack(s);

} 指导教师签字:

相关文档
最新文档