stack

stack的定义

stack:栈,一个后进先出的容器。
先添加头文件#include。
stack name;
typename:可以任意基本数据类型或容器。

stack容器内元素的访问

stack中只能通过top()来访问栈顶元素。

#include <stdio.h>
#include <stack>
using namespace std;
int main()
{
    stack<int> st;
    for(int i=1; i<5; i++)
    {
        st.push(i); //push(i)用以把i压入栈,故此处依次入栈1 2 3 4 5
    }
    printf("%d\n", st.top()); //top()取栈顶元素
    return 0;
}
5

stack常用函数实例解析

(1)push()
push(x)将x入栈,时间复杂度为O(1)。

(2)top()
top()获得栈顶元素,时间复杂度为O(1)。

(3)pop()
pop()用以弹出栈顶元素,时间复杂度为O(1)。

#include <stdio.h>
#include <stack>
using namespace std;

int main()
{
    stack<int> st;
    for(int i=1; i<5; i++)
    {
        st.push(i); //push(i)用以把i压入栈,故此处依次入栈1 2 3 4 5
    }
    for(int i=1; i<=3; i++)
    {
        st.pop(); //连续三次将栈顶元素出栈,即将5 4 3依次出栈
    }
    printf("%d\n", st.top()); //top()取栈顶元素
    return 0;
}
2

(4)empty()
empty()可以检测stack内是否为空,返回true为空,返回false为非空,时间复杂度O(1)。

#include <stdio.h>
#include <stack>
using namespace std;
int main()
{
    stack<int> st;
    if(st.empty() == true) //一开始栈内没有元素,因此栈空
    {
        printf("Empty\n");
    }
    else
    {
        printf("Not Empty\n");
    }
    st.push(1);
    if(st.empty() == true) //入栈1后,栈非空
    {
        printf("Empty\n");
    }
    else
    {
        printf("Not Empty\n");
    }
    return 0;
}
Empty
Not Empty

(5)size()
size()返回stack内元素的个数,时间复杂度为O(1)。

#include <stdio.h>
#include <stack>
using namespace std;
int main()
{
    stack<int> st;
    for(int i=1; i<=5; i++)
    {
        st.push(i); //push(i)用以将i压入栈
    }
    printf("%d\n", st.size()); //栈内有5个元素
    return 0;
}

stack的常见用途

stack用来模拟实现一些递归,防止程序对栈内存的限制而导致程序运行错。一般来说,程序的栈内存空间很小,有些题目来说,如果用普通的函数来进行递归,一旦递归层数过深,则会导致程序崩溃。如果用栈来模拟递归算法的实现,则可以避免这一方面问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳光开朗男孩

你的鼓励是我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值