数据结构实验三 顺序栈的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三顺序栈的实现
实验类型:验证性实验学时:2学时
一、实验目的:
掌握顺序栈的基本操作,如进栈、出栈、判断栈空和栈满,取栈顶元素等运算在顺序存储结构上的运算;并能够运用栈的基本操作解决问题,实现相应算法。
二、实验要求:
1、完成顺序栈的基本操作算法并上机调试通过。
2、撰写实验报告,提供实验结果和数据。
三、实验内容:
设计你的栈的顺序存储结构体,编程实现栈的基本操作。栈中的数据元素类型最好为字符类型,方便今后对字符串的算法设计和应用。
测试数据示例:
(1) 以“ABCDEFG”的字符串顺序进栈;
(2) 以合适顺序出栈得到序列“CDBAGFE”;
(3) 取栈顶元素得到‘F’;
(4) 进栈直到栈满和出栈直到栈空,检验对这两种情形的正确判断和处理。
[实验要点及说明]:借助实验一线性表的顺序存储程序进行改进
栈(stack):是限定仅在表尾进行插入或删除操作的线性表。
栈顶(Top):允许插入和删除的一端,为变化的一端。
栈底(Bottom):栈中固定的一端。
空栈:栈中无任何元素。
特点:根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。也就是说,栈是一种后进先出(Last In First Out)的线性表,简称为LIFO表。
参考:顺序栈的数据类型C语言描述:
#define stacksize 100 //定义栈的最大容量
typedef char elemtype;
typedef Struct{
elemtype data[stacksize]; //将栈中元素定义为elemtype类型
int top; //:指向栈顶位置的指针
}sqstack;
栈的运算:
1.初始化栈:InitStack将栈S置为一个空栈(不含任何元素)。
2.进栈:Push将元素X插入到栈S中,也称为“入栈”、“插入”、“压入”。
3.出栈:Pop删除栈S中的栈顶元素,也称为”退栈”、“删除”、“弹出”。
4.取栈顶元素:GetTop 取栈S中栈顶元素。
5.判栈空:StackEmpty判断栈S是否为空,若为空,返回值为1,否则返回值为0。