408数据结构栈的概念和操作

本文详细介绍了栈这一数据结构的基本概念,包括栈顶和栈低的定义。接着,阐述了栈的初始化、判断栈空、入栈、出栈、读栈顶元素以及销毁栈等基本操作的实现,并提供了顺序栈的C语言代码示例。此外,还提及了共享栈的概念,即两个栈共享同一存储空间,栈顶分别位于空间两端。最后,对栈的顺序存储结构和基本操作进行了总结。
摘要由CSDN通过智能技术生成


一、栈的基本概念

栈是只允许在一端进行插入和删除操作的(受限)线性表
栈顶:允许插入和删除的一端
栈低:不允许插入和删除的一端


二、栈的基本操作

InitStack(&S):初始化一个空栈S;
StackEmpty(S):判断栈是否为空,空返回true,否则false;
Push(&S,x):进栈,若栈s未满,则将x加入使之成为新栈顶;
Pop(&S,&x):出栈,若栈s非空,则弹出栈顶元素,并用x返回;
GetTop(S,&x):读栈顶元素,若栈S非空,则用x返回栈顶元素;
DestroyStack(&S):销毁栈,并释放栈S占用的存储空间;

三、栈的顺序存储结构

1.顺序栈的实现以及基本运算

代码如下(示例):

#define MaxSize 50
typedef struct{
	ElementType data[MaxSize];
	int top;//栈顶元素的下标
}SqStack;

//初始化栈
void InitStack(SqStack &S){
	S.top=-1;
}

void testStack(){
	SqStack S;//声明一个顺序栈
	InitStack(S);
}

//判断是否为空栈
bool StackEmpty(SqStack S){
	if(S.top=-1)
		return true;
	return false;
}

//新元素入栈
bool Push(SqStack &S,ElemType x){
	if(S.top=MaxSize-1)
		return false;
	//S.top = S.top +1;
	S.data[++S.top]=x;
	return true;
}

//新元素出栈
bool Pop(Stack &S,ElemType &x){
	if(S.top=-1)
		return false;
	x=S.data[S.top];
	S.top=S.top-1;
	return true;
}

//读取栈顶元素
bool GetTop(Stack S,ElemType &x){
	if(S.top=-1)
		return false;
	x=S.data[S.top];
	return true;
}

2.共享栈

两个栈的栈底设置在空间两端,栈顶向中间延伸。

#define MaxSize 10//define用于替换而不是声明,将文本MaxSize替换成后面的文本
typedef struct {
	ElemType data[MaxSize];
	int top0;
	int top1;
}ShStack;

//初始化
void InitStack(ShStack &S){
	S.top0=-1;
	S.top1=MaxSize;
}

总结

关于408数据结构栈的基本概念及代码实现基本操作的学习记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值