顺序栈的实现总结
顺序栈的实现总结 第一篇
栈是只允许在一端进行 插入
或 删除
的 线性表
。
注意栈是个操作受限的线性表
栈顶
:只允许插入或者删除
栈底
:固定的,不允许进行插入或删除的另一端
空栈
:不含任何数据元素的栈
栈又被称为后进先出的线性表,简称为LIOF(last in first out)
顺序栈的实现总结 第二篇
栈是只允许在一端进行插入或者删除操作的线性表。如图所示
栈顶(Top)。线性表允许进行插入删除的那一端。 栈底(Bottom)。固定的,不允许进行插入和删除的另一端。 空栈。不含任何元素。
假设某个栈S=(a一,a二,a三,a四,a五),如上图所示,则a一为栈底元素,a五为栈顶元素。由于栈只能在栈顶进行插入和删除操作,进栈次序依次是a一,a二,a三,a四,a五,而出栈次序为a五,a四,a三,a二,a一。栈的操作特性为后进先出。
二.栈的基本操作
InitStack(&S):初始化一个空栈S。
StackEmpty(S):判断一个栈是否为空,若为空则返回true,否则返回false。
Push(&S,x):进栈,若栈S未满,则将x加入使之成为新栈顶。
Pop(&S,x):出栈,若栈S非空,则弹出栈顶元素,并用x返回。
GetTop(S,&x):读取栈顶元素,若S非空,则用x返回栈顶元素。
DestroyStack(&S):销毁栈。
顺序栈的实现总结 第三篇
另外用stacksize表示栈可使用的最大容量
简单、方便、但是容易溢出(数组大小固定)
base == top 是栈空的标志
top - base == stacksize 是栈满的标志。
具体栈空、栈满的示意图如下
一.报错,返回系统
二.分配更大的空间,作为栈的存储空间,将原栈的内容移入新栈
上溢:栈已经满,又要压入元素
下溢:栈已经空,还要弹出元素
(注:上溢是一种错误,使问题的处理无法进行;而下溢一般认为是—种结束条件,即问题处理结束。)
bool InitStack(SqStack &S); //一.栈的初始化
bool StackEmpty(SqStack S); //二.判断是否为空
int StackLength(SqStack S); //三.求栈的长度
void DestroyStack(SqStack &S); //四.销毁栈
void ClearStack(SqStack &S); //五.清空顺序栈
bool Push(SqStack &S, ElemType e); //六.入栈
bool Pop(SqStack &S, ElemType &e); //七.出栈
bool Gettop(SqStack &S, ElemType &e); //八.得到栈顶元素
顺序栈的实现总结 第四篇
一.顺序栈的实现
采用顺序存储的栈称为顺序栈,它利用一组连续的存储单元存放自栈底到栈顶的数据元素,同时附设一个指针top指示前栈顶元素的位置。如下所示
栈顶指针:,初始化设置;栈顶元素:[]。
进栈操作:栈不满时,栈顶指针先加一,再送值到栈顶元素。
出栈操作:栈非空时,先取栈顶元素值,再将栈顶指针减一。
栈空条件:;栈满条件:;栈长:。
二.顺序栈的基本运算
初始化
判断栈是否为空
进栈操作
出栈操作
读取栈顶元素
主函数main
顺序栈的实现总结 第五篇
在国内计算机研究生考试中,如果没有明确规定操作名称,题干没有给出限制,则可以直接使用这些常用操作函数。
以下是基于严蔚敏版的基本操作:
InitStack(&S): 初始化一个空表。
StackEmpty(&S): 判断栈是否为空,若为空则返回true,否则为false。
Push(&S,x): 进栈,若栈未满,则将新元素插入到的位置。
Pop(&S,&x): 出栈,若栈未空,则将栈顶元素赋值给x,并将Top指针-一。
GetTop(S,&x) : 读取栈顶元素,若栈未空,将栈顶元素赋值给x
DestroyStack(&S):销毁栈,并释放栈所用空间。
ClearStack(&S): 清空栈,将Top指针指向-一的初始化位置。
顺序栈的实现总结 第六篇
栈(Stack)是一种后进先出的线性表,限定这种类型的线性表为只能在某一端进行插入和删除操作。
基于栈的特性,我们把它称作后进先出表(Last in First out)LIFO。
常用术语:
栈顶(Top):线性表允许插入和删除的那一端。
栈底:不可操作的那一端。
空栈:不包含任何元素的空表。