• STL stack 常见用法详解


    《算法笔记》学习笔记

    stack 常见用法详解

    stack翻译为栈,是STL中实现的一个后进先出的容器。

    1.stack的定义

    //要使用stack,应先添加头文件#include <stack>, 并在头文件下面加上"using namespace std"
    //定义
    stack< typename > name;
    

    2. stack容器内元素的访问

    //由于栈(stack)本书就是一种后进先出的数据结构,在STL的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
    ", st.top()); //top取栈顶元素
        return 0;
    }
    

    3. 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); //将 1 2 3 4 5 依次入栈
        }
        for(int i = 1; i <= 3; i++) {
            st.pop();   //连续三次将栈顶元素出栈,即将5 4 3 依次出栈
        }
        printf("%d
    ", st.top());
        return 0;
    }
    

    (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
    ");
        } else {
            printf("Not Empty
    ");
        }
        st.push(1);
        if(st.empty() == true) { //入栈"1"后,栈非空
            printf("Empty");
        } else {
            printf("Not Empty
    ");
        }
        return 0;
    }
    

    (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
    ", st.size());  //栈内有5个元素
        return 0;
    }
    

    3. stack的常见用途

    • 模拟实现一些递归,防止程序堆栈内存的现在而导致程序运行出错
  • 相关阅读:
    【Linux学习三】Linux系统目录架构
    【Linux学习二】Linux文件系统
    【Python网络爬虫四】通过关键字爬取多张百度图片的图片
    【GitHub】命令行操作
    【Linux学习一】命令行CLI、BASH的基本操作
    从CK+库提取标记点信息
    【Python网络爬虫三】 爬取网页新闻
    Windows命令行下pip安装python whl包
    【GitHub Desktop】MacOS和Win下配置及简单的使用
    【Python文件处理】递归批处理文件夹子目录内所有txt数据
  • 原文地址:https://www.cnblogs.com/isChenJY/p/11603829.html
Copyright © 2020-2023  润新知