首页 > 编程语言 >栈和队列算法总结

栈和队列算法总结

时间:2023-12-03 19:00:32浏览次数:32  
标签:总结 队列 tt cin else int 算法 stk op

知识概览

在数据结构中,栈和队列都属于线性表。栈是先进后出(FILO)的,队列是先进先出(FIFO)的。

代码模板

#include <iostream>

using namespace std;

const int N = 100010;

// ********************** 栈
int stk[N], tt;

// 插入
stk[++tt] = x;

// 弹出
tt--;

// 判断栈是否为空
if (tt > 0) not empty
else empty

// 栈顶
stk[tt];

// ********************** 队列

// 在队尾插入元素,在对头弹出元素
int q[N], hh, tt = -1;

// 插入
q[++tt] = x;

// 弹出
hh++;

// 判断队列是否为空
if (hh <= tt) not empty
else empty

// 取出队头元素
q[hh];

 

题目链接

https://www.acwing.com/problem/content/830/

代码(数组模拟)

#include <iostream>

using namespace std;

const int N = 100010;

int stk[N], tt;

int main()
{
    int m;
    cin >> m;
    
    while (m--)
    {
        int x;
        string op;
        
        cin >> op;
        if (op == "push")
        {
            cin >> x;
            stk[++tt] = x;
        }
        else if (op == "pop")
        {
            tt--;
        } 
        else if (op == "empty")
        {
            if (tt > 0) cout << "NO" << endl;
            else cout << "YES" << endl;
        }
        else if (op == "query")
        {
            cout << stk[tt] << endl;
        }
    }
    
    return 0;
}

代码(STL)

#include <iostream>
#include <stack>

using namespace std;

stack<int> stk;

int main()
{
    int m;
    cin >> m;
    
    while (m--)
    {
        int x;
        string op;
        
        cin >> op;
        if (op == "push")
        {
            cin >> x;
            stk.push(x);
        }
        else if (op == "pop")
        {
            stk.pop();
        } 
        else if (op == "empty")
        {
            if (stk.empty()) cout << "YES" << endl;
            else cout << "NO" << endl;
        }
        else if (op == "query")
        {
            cout << stk.top() << endl;
        }
    }
    
    return 0;
}

 

队列

题目链接

https://www.acwing.com/problem/content/831/

代码(数组模拟)

#include <iostream>

using namespace std;

const int N = 100010;

int q[N], hh, tt = -1;

int main()
{
    int m;
    cin >> m;
    
    while (m--)
    {
        int x;
        string op;
        
        cin >> op;
        if (op == "push")
        {
            cin >> x;
            q[++tt] = x;
        }
        else if (op == "pop")
        {
            hh++;
        }
        else if (op == "empty")
        {
            if (hh <= tt) cout << "NO" << endl;
            else cout << "YES" << endl;
        }
        else if (op == "query")
        {
            cout << q[hh] << endl;
        }
    }
    
    return 0;
}

代码(STL)

#include <iostream>
#include <queue>

using namespace std;

queue<int> q;

int main()
{
    int m;
    cin >> m;
    
    while (m--)
    {
        int x;
        string op;
        
        cin >> op;
        if (op == "push")
        {
            cin >> x;
            q.push(x);
        }
        else if (op == "pop")
        {
            q.pop();
        }
        else if (op == "empty")
        {
            if (!q.empty()) cout << "NO" << endl;
            else cout << "YES" << endl;
        }
        else if (op == "query")
        {
            cout << q.front() << endl;
        }
    }
    
    return 0;
}

 

标签:总结,队列,tt,cin,else,int,算法,stk,op
From: https://www.cnblogs.com/ykycode/p/17873540.html

相关文章

  • Linux配置Java环境变量(详细步骤总结
    (目录)前言Java的环境变量的配置应该是每个java开发者使用Linux必备的一个配置,鉴于之前笔者在配置虚拟机或者云服务器的时候,都需要额外从网页上寻找资料,略显得有点麻烦,故在此总结一篇Java环境变量的详细配置步骤总结,希望可以帮助广大开发者们提高自己的效率下载JDK官网下载j......
  • 学年(2023-2024-1)学号(20231311)《计算机基础与程序设计》第10周学习总结
    2023-2024-120231311《计算机基础与程序设计》第10周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十周作业这个作业的目标1.学习计算机科学概论第12,13,14章并完成云班课测试2.《C......
  • 链表算法总结
    知识概览链表包括单链表和双链表,这里讨论算法题中的链表。为了考虑算法题中对于时间效率的要求,链表通常是用数组模拟成静态链表的形式,速度快。单链表可以用来写邻接表(包括n个链表),邻接表可以存储树和图,最短路问题、最小生成树问题、最大流问题都可以用邻接表来存储。双链表用来......
  • 2023-2024 20231404高伟光《计算机基础与程序设计》第十周学习总结
    作业信息作业内容我的班级我的班级作业要求第九周要求作业目标信息系统,数据库与SQL,人工智能与专家系统,人工神经网络,模拟与离散事件,排队系统,天气与地震模型,图形图像作业正文此博客教材内容总结c语言程序设计课本第九章初步引入了指针的介绍.......
  • 2023-2024-1 20232320 《网络空间安全导论》第四周学习总结
    教材学习内容总结本周进行了《网络空间安全导论》第四章的学习,在这一章中,教材给我们重点阐述了系统安全的原理和结构,以下是我的思维导图:教材学习中的问题和解决过程问题一:如何理解最小惊讶原则?问题一:解决方案:问AI在系统安全原理中,最小惊讶原则是指在设计安全机制时,应尽可能......
  • 【教3妹学编程-算法题】拼车
    3妹:“太阳当空照,花儿对我笑,小鸟说早早早,你为什么背上炸药包”2哥 :3妹,什么事呀这么开发。3妹:2哥你看今天的天气多好啊,阳光明媚、万里无云、秋高气爽,适合秋游。2哥:是啊,立冬之后天气多以多云为主,好不容易艳阳高照。可是你不能秋游,赶紧收拾收拾上班去啦3妹:哼,好吧~2哥:给你出了一道题......
  • 学期2023-2024-1学号20232417《网络》第4周学习总结
    教材内容总结通过这一章的学习,我了解了系统安全的发展历史、系统安全相关内容的概念以及系统建设的相关事宜,主要包括系统建设的基本原则、着手方式、事前预防、事后补救和保障措施等方面。教材学习中的问题及解决过程问题:在学习了课本内容后对访问控制策略还是不太清楚解决......
  • 《2023-2024-1 20232415 《网络》第三周学习总结》
        网络空间安全的系统安全聚焦于系统的安全性。虽然系统是由它的组成部分(简称为部件)连接起来构成的,但系统安全的观点认为不能把系统仅仅看作部件的集合和连接的集合,还必须把系统自身看作一个完整的单元,也就是说,要以整体的观点去看待系统。    系统安全包含两层含......
  • # 2023-2024-1 20231322 《计算机基础与程序设计》第十周学习总结
    作业信息|2022-2023-1-计算机基础与程序设计)||--|--||2022-2023-1计算机基础与程序设计第十周作业||这个作业的目标|总结本周学习成果及疑问||作业正文|(https://www.cnblogs.com/cjl03/p/17873384.html)|教材学习内容总结信息系统,数据库与SQL,人工智能与专家系统,人工神经网......
  • 文心一言 VS 讯飞星火 VS chatgpt (148)-- 算法导论12.2 3题
    三、用go语言,写出过程TREE-PREDECESSOR的伪代码。文心一言:以下是使用Go语言编写的TREE-PREDECESSOR函数的伪代码:funcTREE-PREDECESSOR(node){ifnode.parent!=nil{returnnode.parent}//如果节点是根节点,则返回nilifno......