数据结构实验三 顺序栈的实现

  • 格式:doc
  • 大小:47.00 KB
  • 文档页数:2

下载文档原格式

  / 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。