提前声明,部分源于书籍。并非完全本人总结。
数据结构-栈
栈?是什么呢?需要从数据结构讲起:
个人认为数据结构就是一个容器,为我们提供容器去装东西
但是你装的时候要去遵循它(数据结构)的规则,比如说今天要讲的栈,他就是后进先出(也可以说先进后出哈)。具体一会在仔细讲。
数据结构是什么讲完了,就需要了解了解什么是栈了~
栈是只能在某一端插入和删除的特殊线性表(来源于信息学奥赛一本通这本书)
假如你洗碟子(用了深入浅出程序设计竞赛这本书的例子)、
一大摞的碟子让你去洗,人家摞碟子
是不是一个一个从下往上摞碟子?
摞碟子摞好了给你去洗,你是不是从上往下去洗,对不?你想昂,按照这么来,摞碟子的时候的第一个摞上去的,是不是你最后一个洗的,也可以说,人家最后一个给你摞上去的盘子,是不是你第一个洗的盘子,这,就是栈(撒花)
再讲讲栈的操作哈
一个栈可以用定长为n的数组s来表示,用一个栈指针top指向栈顶,如果top=0,表示栈空,top=n时栈满。进栈时top+1,退栈时top-1.当top<0时为下溢。栈指针在运算中永远指向栈顶。
1.手搓进栈(push)
①:果top>=n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否满了,满则溢出;不满则作②)
②:top++(栈指针+1,指向进栈地址)
③:s[top]=x,结束(x为新进栈的元素)
2.手搓退栈(pop)
①:如果top<=0,则给出下溢信息,作出错处理(退栈之前先检查是否已为空栈,空则下溢)
②:x = s[top],(退栈后的元素赋给x)
③:top--,结束(栈指针-1,指向栈顶)
3.元素访问
st.top()//返回栈顶
4.修改
st.push()//插入传入的参数到栈顶
st.pop()//弹出栈顶
5.容量
st.push()//插入传入的参数到栈顶
st.pop()//弹出栈顶
强调:上面的编号3,4,5都是STL中的栈,STL的stack容器提供的这些函数哦~
在本文我不提供例题,请大家自行练习,本文写的相对潦草.
编写不易,麻烦点赞+评论一下~