堆栈部分学习总结(栈的顺序存储实现、链式存储实现)

堆栈

有时为了方便解决问题需要有种存储方法,能顺序存储运算数,并在需要时“倒序”输出!由此引入堆栈。
堆栈(Stack) :具有一定操作约束的线性表,其特点如下:
只在一端(栈顶,Top)做插入、删除
➢插入数据:入栈(Push)
➢删除数据:出栈(Pop)
后入先出: Last In First Out (LIFO)

栈的顺序存储实现

主要框架:
类型名称:堆栈(Stack)
数据对象集:一个有0个或多个元素的有穷线性表。
操作集:长度为MaxSize的堆栈S∈Stack,堆栈元素item∈ElementType

  1. Stack CreateStack( int MaxSize):生 成空堆栈,其最大长度为MaxSize;
  2. int IsFull( Stack S, int MaxSize ):判断堆栈S是否已满;
  3. void Push( Stack S, ElementType item ):将元素item压入堆栈;
  4. int IsEmpty ( Stack S ):判断堆栈S是否为空;
  5. "ElementType Pop( Stack S ):删除并返回栈顶元素;
  6. void Display(Stack S): 从栈底 到 栈顶输出栈的所有元素

栈的顺序存储结构通常由一个维数组和一个记录
栈顶元素位置
的变量组成。

#include<bits/stdc++.h>
using namespace std;
#define MaxSize 100
struct SNode {
   
	int Date[MaxSize];
	int Top;
};
typedef SNode* stack;
生成空栈(CreateStack)
Stack CreateStack()
{
   
	Stack S = (Stack)malloc(sizeof(struct SNode));
	S->Top = -1;
	return S;
}
入栈(Push)
void Push(stack a, int b) {
   
	if (a->Top == MaxSize - 1)
	{
   
		cout << "堆栈已满!\n";
		return;
	}
	else
	{
   
		a->Date[++(a->Top)]=b;
		return;
	}
}
出栈(Pop)
int Pop(Stack a)
{
   
	if (a->Top 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值