Bootstrap

栈的基本操作

1、栈的基础概念:​ 栈是一种线性表,是一种先进后出(FILO)的数据结构。栈顶和栈底:进出的一端称为栈顶(top),另一端称为栈底(base)。栈可以用顺序存储,也可以用链式存储,分别称为顺序栈和链栈。这里我们只侧重讲顺序栈,链栈了解即可。入栈:入栈前要判断是否栈满,如果栈已满,则入栈失败;否则将元素放入栈顶,栈顶指针向上移动一个位置(top++)。出栈:出栈前要判断是否栈空,如果栈是空的,则出栈失败;否则将栈顶元素暂存给一个变量,栈顶指针向下移动一个空间(top--)。

2、stack容器简介:​ 又称栈,默认实现的底层容器是deque,本身是容器适配器,没有适用的迭代器。stack容器中的所有元素都必须符合“后进先出”的条件,只能在栈顶删除元素,只能在栈顶添加元素,只有栈顶元素可以访问,不提供遍历stack内元素的功能,不支持下标操作,因此入栈和出栈都要通过循环实现。

 

栈的代码实现:

手写栈:

int stk[100], top = 0;  // 定义一个栈,大小为100
int size = top - 0;  // 栈内元素个数
if(top == 0)        // 判空,表示栈为空
int t = stk[top];   // 取栈顶,前置条件:栈不为空top > 0
stk[++top] = t;     // 入栈,将 t 入栈
top--;              // 出栈,前置条件:栈不为空  top > 0

 

 stack实现:

#include<iostream>
#include<stack>  //栈的头文件 
using namespace std;
int main()
{
    stack<int> s;  //定义栈
    for(int i=1; i<=10; i++)  //将1-10入栈
    {
        s.push(i);
    }   
    while(!s.empty())     //首先输出栈顶元素,然后将栈顶元素出栈,循环执行,直到栈为空。 
    {
        cout <<s.top()<<" ";  //输出首元素
        s.pop();       //栈顶元素出栈
    }
    return 0;
}

 

 

;