栈的顺序储存和链式储存

栈是是一种限定性的线性表,它将线性表的插入和删除限定为仅在表的一端进行。将表中允许插入和删除的一端成为栈顶。所以栈顶的位置是不断动态变化的。它具有“后进先出”的特点。因为栈是由线性表实现的,所以,栈有两种存储结构:顺序存储和链式存储。对应的栈成为顺序栈和链式栈。下面,分别来介绍这两种栈的相关操作。

一、顺序存储

程序代码

# include <stdio.h>
 
// 顺序栈的定义 
 
#define  MaxSize 10
 
typedef struct{
	int data[MaxSize];	// 静态数组存放栈中元素 
	int top;			// 栈顶指针  指向数组下标,从0开始 
}SqStack;
 
 
// 1、初始化
bool InitStack(SqStack &S){
	S.top = -1;		// 初始化栈顶指针 
	return true;
} 
 
// 2、判断栈空
bool IsEmpty(SqStack S){
	if(S.top == -1){	// 栈空 
		return true;
	}else{
		return false;
	}
} 
 
// 3、入栈
bool PushELem(SqStack &S,int e){
	if(S.top == MaxSize - 1){	// 栈满,不能插入新元素 
		return false; 
	}
	S.top = S.top + 1;		// 先将栈顶指针 +1
	S.data[S.top] = e;		// 新元素入栈
	
	// 两行合并
	// S.data[++S.top] = e  指针先加 1 ,再入栈    
	return true;
} 
 
// 4、出栈
bool PopElem(SqStack &S,int &e){	// 元素出栈
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值