顺序栈的基本操作

本文深入讲解顺序栈的初始化、入栈、出栈及取栈顶元素的方法,探讨顺序栈受空间限制的问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//顺序栈的初始化,入栈,出栈,取栈顶元素。
#define MAXSIZE 100
typedef struct
{
	SElemType *base;//栈底指针
	SElemType *top;//栈顶指针
    int stacksize;

}SqStsck;


  
//初始化
Status InitStack(SqStack &S)
{
	
S.base=new a[MAXSIZE];//为顺序栈分配一个最大容量为MAXSIZE的存储空间
if(!S.base) return OVERFLOW;
S.top=S.base;//栈顶指针与栈底指针相等,栈为空栈。
S.stacksize=MAXSIZE;//栈的容量等于数组的最大容量。
}

//入栈
Status Push(SqStack &S,SElemType e)
{
if(S.top-S.base==stacksize) return error;//入栈前判断栈是否满,栈的首尾(指针可以相加减)相减得到当前的栈长。
*S.top=e;//新的数据元素入栈
S.top++;//栈顶指针+1
}

//出栈
Status Pop(SqStack &S,SElemType &e)
{
if(S.top==S.base) return error;//出栈前判断栈是否为空
S.top--;//栈顶指针-1;
e=*S.top;//返回栈顶元素的值。

}

//取栈顶元素
SElemType GetTop(SqStack S)
{
if(S.top==S.base) return error;//取栈顶元素前判断栈是否为空
return *(S.top-1);//栈顶元素出栈,栈顶指针不变
}

顺序栈受到最大空间容量的限制,解决方法:1:报错。2:重新分配空间扩大容量。3:换用链栈··

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值