一
.
实验目的和要求
1
、学会通过对问题的分析,设计一种合理的数据结构,并进行定义及操作的实
现。
2
、掌握利用栈各种操作来进行具体的实际应用。
3
、加强综合程序的分析、设计能力。
二
.
实验内容
1
、共享栈的设置,问题描述如下:
在一个数组空间
stack[MaxSize]
中可以同时存放
两个顺序栈
,
栈底分别处在
数组的两端,当第
1
个栈的栈顶指针
top1
等于-
1
时则栈
1
为空,当第
2
个栈
的栈顶指针
top2
等于
MaxSize
时则栈
2
为
空
。两个栈均向中间增长,当有元素
向栈
1
进栈时,
使
top1
增
1
得到新的栈顶位置,
当有元素向栈
2
进栈时,
使
top2
减
1
得到新的栈顶位置。当
top1==top2-1
或
top1+1==top2
时,存储空间用完,
无法再向任一栈做进栈操作,此时可考虑给出错误信息并停止运行。
要求:
⑴
给出共享栈的顺序存储类型定义。
⑵
给出共享栈的抽象数据类型定义。
⑶
建立头文件
test9_stack.h
,
包含共享栈的基本操作实现函数;
建立主程序文
件
test9.cpp
,在主函数中对共享栈的各个操作进行测试。
2
、利用上述共享栈,实现火车车厢的调度模拟
设火车车厢分为三类:硬座、硬卧、软卧,分别用
A
、
B
、
C
表示。下图描述
车厢调度的示意图,
图中右端为排列无序的车厢,
左端为调度后的车厢排列,
使
得所有软卧车厢在最前面、所有硬卧车厢在中间、所有硬座车厢在最后。
编程模拟上述车厢调度过程。
提示:两个辅助铁轨相当于两个栈,右端车厢进入用相应字符串给出,如
“
BBACBCAABBCAA
”
,左端车厢的用新生成的字符串给出。在
test9_stack.h
给出模拟函数,并在主函数中进行调用测试。