顺序栈的基本操作:初始化、进栈、出栈、读栈顶元素
来源:互联网 发布:国际贸易统计数据库 编辑:程序博客网 时间:2024/05/02 05:59
顺序栈:利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时由于栈操作的特殊性,还必须附设一个位置指针top(栈顶指针)来动态地指示栈顶元素在顺序栈中的位置。通常以top=-1表示空栈。
代码如下:
#include<iostream>
using namespace std;
#define TRUE 1
#define FALSE 0
//顺序栈的存储结构
#define Stack_Size 50 //设栈中元素个数为50
typedef struct
{
int elem[Stack_Size];//用来存放栈中元素的一维数组
int top;//用来存放栈顶元素的下标,top=-1表示空栈
}SeqStack;
//初始化顺序栈
void InitStack(SeqStack *S)
{
S->top = -1;//构造一个空栈
}
//顺序栈进栈运算,首先判断栈是否已满,若栈已满,还要进栈就会发生上溢
int Push(SeqStack *S,int x)//将x置入S栈新栈顶
{
if (S->top == Stack_Size - 1)//栈已满
{
return FALSE;
}
S->top++;
S->elem[S->top] = x;//把x入栈
return TRUE;
}
//顺序栈出栈运算,首先判断栈是否为空,若栈空,还要出栈就会发生下溢
int Pop(SeqStack *S, int *x)//将S栈顶元素弹出,放到x所指的存储空间中带出
{
if (S->top == - 1)//栈为空
{
return FALSE;
}
else
{
*x = S->elem[S->top];
S->top--;//修改栈顶指针
return TRUE;
}
}
//顺序栈读栈顶元素运算
int GetPop(SeqStack *S, int *x)//将栈S栈顶元素读出,放到x所指的存储空间中,栈顶指针保持不变
{
if (S->top == -1)//栈为空
{
return FALSE;
}
else
{
*x = S->elem[S->top];
return TRUE;
}
}
注意:在实现GetPop操作时,也可将参数SeqStack *S改为SeqStack S,将传地址方式改为传值方式。传值比传地址容易理解,但传地址比传值更节省空间与时间。
本文出自 “岩枭” 博客,请务必保留此出处http://yaoyaolx.blog.51cto.com/10732111/1771270
- 顺序栈的基本操作:初始化、进栈、出栈、读栈顶元素
- C语言实现顺序栈的基本操作(初始化、判断空、入栈、出栈、获取栈顶元素)
- 数据机构(五) 顺序栈的基本操作 --- 包含初始化,入栈和出栈
- 链栈的基本操作(初始化,压栈,出栈)
- 关于顺序栈的初始化,进栈,出栈,栈满,栈空的操作
- 顺序出栈操作
- 顺序栈的定义、初始化、出栈、入栈等操作 C++代码实现
- 采用顺序存储实现栈的初始化、入栈、出栈操作。
- C++栈的初始化,入栈,出栈,获取栈顶元素等操作
- 顺序栈的出栈操作
- 编写程序,实现顺序栈的创建、进栈和出栈等基本操作算法。
- 顺序栈的基本操作实现---入栈、出栈、判断是否为空
- 实现一个栈(元素遵守先入后出顺序),能够通过 min 方法在 O(1)时间内获取栈中的最小元素。同时,栈的基本操作:入栈(Push)、出栈(Pop),也是在O(1)时间内完成的
- 顺序栈初始化,判空,进栈,出栈,打印
- 顺序栈的基本操作
- 顺序栈的基本操作....
- 顺序栈的基本操作
- 顺序栈的基本操作
- 指针与数组的比较
- 顺序表的查找、插入、删除、合并操作及其优缺点
- 单链表的头插、尾插、删除、合并等操作
- 斐波拉契数列的递归、非递归、公式法多种方法实现
- win10系统桌面图标变为白色方框和去除桌面图标快捷方式小箭头的方法
- 顺序栈的基本操作:初始化、进栈、出栈、读栈顶元素
- 多栈共享技术,双端栈的初始化、进栈、出栈操作
- 链队列的初始化、入队、出队等操作实现
- 循环队列的初始化、入队、出队等基本操作
- 链栈的基本操作
- 多栈运算
- Flash的按钮链接在网页的中的使用
- 汉诺塔问题的递归解法
- 求f(k)=k^k(k=1...n)的前n项和