栈的顺序存储结构,栈的入栈和出栈的顺序规律
admin
2023-07-05 00:32:26

栈的顺序存储结构

栈的顺序存储结构,栈的入栈和出栈的顺序规律图1

栈的顺序存储结构定义:

1、栈是限定只能在表尾删除和插入操作的线性表。

2、允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。

3、栈的插入操作称为进栈,也称压栈、入栈。

4、栈的删除操作称为出栈,也称弹栈。

栈的入栈和出栈的顺序规律

栈中的数据只有一种方式出栈,即先进后出,所以出栈的可能数目跟入栈的可能排列数目是一致的。a的出入有2中可能,b的出入有2种可能,c的出入有2种可能,d只需要关系入,只有一种可能。所以可能的出栈方式数为2*2*2*1=8种

入栈顺序:a、b、c、d。出栈顺序可以是:d、c、b、a;a、b、c、d;b、a、c、d很多,但要把栈想像成一个没盖子的纸箱,取出东西时只能从最上层取,放进东西也只能放在最上层,所以栈是一个“后进先出”或“先进后出”的顺序存储结构。

栈的顺序存储结构,栈的入栈和出栈的顺序规律图2

扩展资料:

栈的顺序存储结构是利用内存中的一片起始位置确定的连续存储区域来存放栈中的所有元素,另外为了指示栈顶的准确位置,还需要引入一个栈顶指示变量top,采用顺序存储结构的栈称为顺序栈(sequence stack)。设数组data[MAXSIZE]为栈的存储空间,其中MAX-SIZE是一个预先设定的常数,为允许进栈结点的最大可能数目,即栈的容量。

初始时栈空,top等于0。当top不等于0时,data[0]为栈底元素,即为当前停留在栈中时间最长的元素;而data[top-1]为最后入栈的元素,即为栈顶元素。

栈的存储结构

栈同顺序表和链表一样,栈也是用来存储逻辑关系为 "一对一" 数据的线性存储结构。

栈的具体实现

栈是一种 "特殊" 的线性存储结构,因此栈的具体实现有以下两种方式:

顺序栈:采用顺序存储结构可以模拟栈存储数据的特点,从而实现栈存储结构;

链栈:采用链式存储结构实现栈结构;

栈存储结构与之前所学的线性存储结构有所差异,这缘于栈对数据 "存" 和 "取" 的过程有特殊的要求:

栈只能从表的一端存取数据,另一端是封闭的;

在栈中,无论是存数据还是取数据,都必须遵循"先进后出"的原则,即最先进栈的元素最后出栈。

通常,栈的开口端被称为栈顶;相应地,封口端被称为栈底。因此,栈顶元素指的就是距离栈顶最近的元素。

栈顺序存储结构的基本操作算法实现

一、顺序栈

栈的顺序存储结构简称为顺序栈,它是运算受限的顺序表。因此,可用数组来实现顺序栈。

因为栈底位置是固定不变的,所以可以将栈底位置设置在数组的两端的任何一个端点;

栈顶位置是随着进栈和退栈操作而变化的.

栈的顺序存储表示 — 顺序栈

#include

template class Stack {

private:

int top; //栈顶数组指针

Type *elements; //栈数组

int maxSize; //栈最大容量

public:

Stack ( int=10 ); //构造函数

~Stack ( ) {

delete[ ] elements;

}//析构函数

void Push ( const Type & item ); //入栈

Type Pop ( ); //出栈

Type GetTop ( ); //取栈顶元素

void MakeEmpty ( ) { top=-1; } //置空栈

int IsEmpty ( ) const {

return top == -1;

}

int IsFull ( ) const{

return top == maxSize-1;

}

}

void Push ( const Type & item ); //入栈

Type Pop ( ); //出栈

Type GetTop ( ); //取栈顶元素

void MakeEmpty ( ) { top=-1; } //置空栈

int IsEmpty ( ) const {

return top == -1;

}

int IsFull ( ) const {

return top == maxSize-1;

}

}

构造函数

template Stack::

Stack ( int s ) : top (-1), maxSize (s) {

elements = new Type[maxSize];

}

template void Stack::

Push ( const Type & item ) {

assert ( !IsFull ( ) );或//先决条件断言

if(top != maxSize-1 )

elements[++top] = item; //加入新元素

}

template Type Stack:: Pop ( ) {

assert ( !IsEmpty ( ) ); //先决条件断言

return elements[top--]; //退出栈顶元素

}

template Type stack::

GetTop ( ) {

assert ( !IsEmpty ( ) ); //先决条件断言

return elements[top]; //取出栈顶元素

}

以上就是关于栈的顺序存储结构,栈的入栈和出栈的顺序规律的全部内容,以及栈的顺序存储结构的相关内容,希望能够帮到您。

相关内容

热门资讯

应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...