【给将来学神的算法详解--数据结构】(1)栈

来源:互联网 发布:雅马哈网络经销商 编辑:程序博客网 时间:2024/06/08 07:47

新栏目!!!
————————————华丽的分割线————————————
栈是个神奇的东西,怎么说呢?你就想象你在我小学食堂排队打汤,结果所有人都从队伍头部插进来就好了
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
原创粉丝点击