数据结构之顺序表模拟栈空间

栈是一种线性表;首先它是一种表,所以可以有顺序表和链式表的区别,它是一种操作收到限制的表,只能在表的一端进行插入和删除操作,他在程序设计中应用广泛,递归和嵌套以及迷宫等问题都是以栈空间为雏形的。
在这里插入图片描述
从图中也可以看出来,栈空间的特点是先进后出。
栈的一般操作多为插入和删除,也就是出栈和入栈。但要判断插入是否会溢出,删除是否以及没有可删除的了。

#include<iostream>
#define M 100
using namespace std;
typedef struct stack
{
	int arr[M];
	int p;
}stacktype;//别名设置

bool judge(stack* s);//判断栈空
bool judgefree(stack* s);//判断栈满,是否会溢出
bool push(stack* s, int x);//插入栈
int pop(stack* s);//出栈

int main()
{	
	stacktype *s=new stacktype;
	s->p = -1;	//栈的初始化
	return 0;
}

bool judge(stack* s)
{
	if (s->p == -1)
	{
		return (false);
	}
	else
		return (true);
}

bool judgefree(stack* s)
{
	if (s->p==M-1)
	{
		return (false);
	}
	else
		return (true);
}

bool push(stack* s, int x)
{
	if (judgefree(s))//未满则操作
	{
		s->p++;
		s->arr[s->p] = x;
	}
	else
		return false;
}
int pop(stack* s)
{
	if (judge(s))//未空则操作
	{
		int x;
		x = s->arr[s->p];//取
		s->p--;//移
		return x;
	}
	else
		return -1;//此处设置可以根据情况来定
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值