栈的简单小结

1.栈的基本概念

2.栈的顺序存储结构

3.栈的链式存储结构


1.栈的基本概念

  • 操作受限的线性表,只允许在一端进行插入和删除。操作特性:先进后出(LIFO)。
  • 栈顶:可以进行删除和插入的一端
    栈底:固定不变,不可进行插入和删除。
  • 卡特兰数:n 个不同元素进栈,出栈元素不同排列可以计算。
  • 一些基本操作
InitStrack(&S)   //初始化空栈 S
Push(&S,x)      //进栈
Pop(&S,&x)     //出栈
GetTop(S,&x)   //读取栈顶元素
StackEmpty(S)   //判空
DestroyStack(&S)   //销毁栈

2.栈的顺序存储结构

1)初始化

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

2)进栈

//进栈--增
bool Push(SqStack &S,ElemType x){
	if(S.top == MaxSize-1)
		return false;
	S.data[++S.top] = x; //先指针加 1,再入栈
		return ture;
}

3)出栈

//出栈--删
bool Pop(SqStack &S,ElemType &x){ //加了引用符号
	if(S.top == -1)
		return false;
	x = S.data[S.top--]; //先出栈,再指针减 1
		return ture;
}

4)读取栈顶的元素

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

5)栈的判空

//栈--判空
bool StackEmpty(SqStack S)
	if(S.top == -1)
		return true;
	else 
		return false;

共享栈

  • 逻辑上两个栈,物理上共享同片存储空间
  • 栈满:top1 - top0 == 1
  • 优点:更有效利用存储空间,发生上溢的可能性降低、存取时间复杂度O(1)

3.栈的链式存储结构

  • 采用单链表实现,所有操作均在单链表表头进行
  • 优点:不存在栈满上溢的情况
    提高了效率 更便于多个栈共享存储空间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值