【算法详解-数据结构】(1)栈

新栏目!!!
————————————华丽的分割线————————————
栈是个神奇的东西,怎么说呢?你就想象你在我小学食堂排队打汤,结果所有人都从队伍头部插进来就好了
1
那么我们先介绍一下栈:
栈,又称FILO(First In Last Out先进后出),是一个线性结构,只有一个指针-栈顶(top)
那么栈有什么操作呢?
好了我们再请出我们的打汤大妈
2
这时候,终于有人来了
3
于是,top++,把这个人扔进空栈中。
正当阿姨打完汤,有一个人串了进来!
那么问题来了,这个人从左边还是右边加入呢?
由于输入输出端都在阿姨处,所以从靠近阿姨处加入。
所以这是加入(push)代码

	void push(int x)
	{
		a[top++]=x;
	} 

还有stack的主代码

const int MAXN=10086;
struct stack
{
	int top;
	int a[MAXN];
	stack(){memset(a,0,sizeof(a)),top=0;}
}

加完人后,变成了这样:
4
然后第二个人打完汤又出去了。
这时候就要用到出栈(pop)函数,就是把top–就可以了(别问我为什么)

	bool pop()
	{
		if(!top)return 0;
		top--;
		return 1;
	} 

然后变成了这样
5
突然,数以万计的人冲了进来!!!
这里写图片描述
过了九九八十一年(miao)终于轮到他了
这里写图片描述
当然,还有一些front(取栈顶值),empty(判断是否空栈)等函数没讲,不过由于太水,请大家自行研究。
代码集合:

#include <cstdio>

const int MAXN=10086;
struct stack
{
	int top;
	int a[MAXN];
	stack(){memset(a,0,sizeof(a)),top=0;}
	bool empty()
	{
		return !top;
	}
	bool pop()
	{
		if(!top)return 0;
		top--;
		return 1;
	} 
	void push(int x)
	{
		a[top++]=x;
	} 
	int front()
	{
		return a[top];
	}
}

————————————华丽的分割线————————————
end。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值