栈的顺序存储结构(顺序栈)

本文介绍顺序栈的基本概念,包括顺序栈的存储结构定义、初始化过程、入栈与出栈操作的具体实现,以及如何获取栈顶元素。通过这些内容,读者可以全面了解顺序栈的工作原理及其在程序设计中的应用。

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

栈的顺序存储结构

1.顺序栈的存储结构

#define MAXSIZE 100	//顺序栈存储空间的初始分配
typedef struct{
	SElemType *base;	//栈底指针
	SElemType *top;		//栈顶指针
	int stacksize;		//栈可用的最大容量
}SqStack;

2.顺序栈的初始化

初始化就是为顺序栈动态分配一个预定义大小的数组空间

栈属于逻辑结构
数组为顺序存储结构(存储/物理结构:逻辑结构在计算机中的存储形式)
具体关系见本人关于数据结构第一章图解:传送门

Status InitStack(SqStack &S){	//形参使用引用&,以下函数对S操作就是对实参的操作
	S.base = new SElemType[MAXSIZE];	//为栈分配一个数组
	//为顺序栈动态分配一个最大容量为MAXSIZE的数组空间
	//数组名为指向数组第一个元素的指针,所以将这里的指针赋值给指向栈第一个元素的栈底指针
	if(!S.base)	//判断是否分配成功
		exit(OVERFLOW);
	S.top = S.base;		//初始化时SqStack S为空栈(栈内没有任何元素)
	S.stacksize = MAXISIZE;	//将栈的大小置为最大容量MAXSIZE
	return OK;	//返回初始化状态(是否成功完成初始化)
}

3.顺序栈的入栈操作

入栈(进栈/压栈)是指在栈顶插入一个新元素

Status Push(SqStack &S,	SElemType e){	//形参使用引用&,以下函数对S操作就是对实参的操作
	if(S.top - S.base == S.stacksize)	//判断栈是否已满
		return ERROR;
	*S.top++ = e;	//元素e压入栈顶,栈顶指针top加1
	//后置式递增要拷贝一个临时对象,S.top调用栈顶指针,*(S.top)解引用
	//将e赋值给临时对象(*S.top),然后再进行自增++
	return OK;
}

4.顺序栈的出栈操作

出栈就是将栈顶元素删除

Status Pop(SqStack &S, SElemType &e){	//形参使用引用&,以下函数对S和e操作就是对实参的操作
	if(S.top == S.base)	//判断栈是否为空
		return ERROR;
	e = *--S.top;	//栈顶指针先减1,然后将栈顶元素赋值给e
	return OK;
}

5.取栈顶元素

当栈非空时,返回当前栈顶元素的值。栈顶指针保持不变

SElemType GetTop(SqStack S){
	if(S.top != S.base)	//栈非空
		return *(S.top-1);	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Uncertainty!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值