数据结构——堆栈

数据结构——堆栈

在了解堆栈之前,先来了解一下后缀表达式

中缀表达式:运算符号位于两个运算数之间,如a+b*c-d/e

后缀表达式:运算符号位于两个运算数之后,如abc*+de/-

1.堆栈的抽象数据类型描述

堆栈:具有一定操作约束的线性表

只在一端(栈顶,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(StackS):删除并返回栈顶元素

Push和Pop可以穿插交替进行

2.栈的顺序存储实现

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

#define MaxSize
typedef struct SNode* Stack;
struct SNode
{
	ElementType Date[MaxSize];
	int Top;
};

1.入栈

void Push(Stack Ptrs, ElementType item)
{
	if (Ptrs->Top==MaxSize-1)
	{
		printf("堆栈满");
		return;
	}
	else
	{
		Ptrs->Date[++(Ptrs->Top)] = item;
		return;
	}
}

2.出栈

ElementType Pop(Stack Ptrs)
{
	if (Ptrs->Top==-1)
	{
		printf("堆栈空");
		return Error;
	}
	else
	{
		return (Ptrs->Date[(Ptrs->Top)--]);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值