使用数组模拟数据结构栈和队列
栈:后进先出
对于栈:我们使用tt表示栈顶的下标,如果tt==0表示栈空

队列:先进先出

对于队列,我们使用hh表示队首,tt表示队尾,tt初始化为-1,判断队列是否为空的条件:如果hh<=tt,说明不空,而hh>tt表示队列为空。
插入是在队尾插入,弹出是在队首弹出。

#include<iostream>
using namespace std;
const int maxn=1e5+10;//********栈*********************
int stk[maxn];//栈的数组
int tt;//表示栈顶的下标,tt=0说明栈空//栈顶插入一个数
stk[++tt]=x;//弹出
tt--;//判断栈是否为空
if tt>0 不空
else 空//取出栈顶元素
stk[tt];//************队列*****************
//下面是队列
int q[maxn];
int hh;//队头
int tt=-1;//队尾//在队尾插入元素,在队头弹出元素//插入
q[++tt]=x;//弹出
h++;//队头指针往后移动一位//判断是否为空if(hh<=tt) not empty
else empty;//取出队头元素
q[hh]//还可以取队尾
q[tt]

模拟栈
实现一个栈,栈初始为空,支持四种操作:

(1) “push x” – 向栈顶插入一个数x;

(2) “pop” – 从栈顶弹出一个数;

(3) “empty” – 判断栈是否为空;

(4) “query” – 查询栈顶元素。

ac代码

#include<iostream>
#include<string>
using namespace std;
const int maxn=1e5+10;//********栈*********************
int stk[maxn];//栈的数组
int tt;//表示栈顶的下标,tt=0说明栈空int main(){int m;cin>>m;int x;string s;while(m--){cin>>s;if(s=="push"){cin>>x;stk[++tt]=x;//第一个元素下标为1}else if(s=="pop"){if(tt>0) tt--;}else if(s=="query"){cout<<stk[tt]<<endl;}else if(s=="empty"){if(tt>0) cout<<"NO"<<endl;else cout<<"YES"<<endl;}}return 0;
}

模拟队列
实现一个队列,队列初始为空,支持四种操作:

(1) “push x” – 向队尾插入一个数x;

(2) “pop” – 从队头弹出一个数;

(3) “empty” – 判断队列是否为空;

(4) “query” – 查询队头元素。

现在要对队列进行M个操作,其中的每个操作3和操作4都要输出相应的结果。

ac代码

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
const int maxn=100010;
int q[maxn],tt=-1,hh;int main(){int m,x;string s;cin>>m;while(m--){cin>>s;if(s=="push"){cin>>x;q[++tt]=x;}else if(s=="pop"){if(hh<=tt)hh++;}else if(s=="empty"){if(hh<=tt) cout<<"NO"<<endl;else cout<<"YES"<<endl;}else if(s=="query"){cout<<q[hh]<<endl;}}return 0;
}

数组模拟栈和队列板子相关推荐

  1. 六、使用数组模拟栈的思路及代码实现

    使用数组模拟栈的实现过程 1.栈的介绍 (1) 栈的英文为(stack) (2) 栈是一个先入后出(FILO-First In Last Out)的有序列表. (3) 栈(stack)是限制线性表中元 ...

  2. 字符串得结果!Java数组模拟栈以实现中缀表达式综合计算器,字符串表达式计算器

    文章目录 数组模拟栈类 中缀表达式计算器类(测试类) 数组模拟栈类 主要实现栈的一些基本功能,以及在该场景下的功能. //先创建一个栈 class AStack {private int maxSiz ...

  3. 数据结构之数组模拟栈

    栈的特点即先进后出,采用数组模拟栈,实现栈的这一特性主要是靠定义一个指针(索引). 指针的初始位置指向的是-1 以下给出代码: package com.ebiz.stack;/*** @author ...

  4. 数据结构 - 栈(数组模拟栈操作)

    数组模拟栈操作 package stack;import java.util.Scanner;public class ArrayStackDemo {public static void main( ...

  5. JavaScript数据结构与算法(1)(数组、栈、队列、链表)(ES6)

    注意:原教学视频:JavaScript(ES6)数据结构和算法 | JavaScript数据结构与算法 (都是CoderWhy老师的教学) 原作者(笔记)链接:JavaScript 数据结构与算法 | ...

  6. java 模拟栈底层用数组_java用数组模拟栈

    package stack2; public interface StackADT { /** * 添加元素 * @param object */ void push(Object object); ...

  7. DSt:数据结构的简介、最强学习路线(逻辑结构【数组-链表-栈和队列/树-图-哈希】、物理结构、数据运算【十大排序/四大查找-图三大搜索-树三大遍历】、高级算法【贪心/分治/动态规划】之详细攻略

    DSt:数据结构的简介.最强学习路线(逻辑结构[数组-链表-栈和队列/树-图-哈希].物理结构[元素/关系].数据运算[十大排序/四大查找-图三大搜索-树三大遍历].高级算法[贪心/分治/动态规划]) ...

  8. linux/bash:用数组模拟栈(FILO)的封装

    linux shell中是没有队列这个类型的,如果需要用到队列模型,就需要自己实现,以下是用数组模拟一个栈(FILO)的操作 #!/bin/bash # 向栈中添加一个元素 # $1 栈变量名 # $ ...

  9. 算法练习day7——190325(比较器、不基于比较的排序、maxGap、数组实现栈和队列、minStack)

    1.比较器 1.1 Arrays.sort() Arrays.sort(数组) 若其中的数组元素时自定义类型,报错: 若为基本类型,则按值排序. Arrays.sort(数组,自己定义的比较器): 会 ...

最新文章

  1. Oracle dblink报错:ORA-01017、ORA-02063解决
  2. [深度学习] 自然语言处理 --- ALBERT 介绍
  3. python 百度ocr识别_Python使用百度Ocr识别文字保存CSV
  4. HexorBase 登陆、执行语句、数据库帐号密码破解
  5. 你以为熬个3年工作经验就是Java高级开发了?
  6. 图书馆管理系统——超期付款
  7. STM32编程中枚举和结构体的结合
  8. 浅谈NLP算法工程师的核心竞争力
  9. ubuntu16.04下ROS操作系统学习笔记(六 )机器视觉-摄像头标定-ROS+OpenCv-人脸识别-物体跟踪-二维码识别
  10. textfield tips
  11. LeetCode 343. 整数拆分(Integer Break) 25
  12. CentOS 7 安装 tomcat7.0
  13. java jvm理解_深入理解JVM(一)——基本原理
  14. 《职场动物进化手册》笔记整理
  15. 炭足迹计算机的火车好处,碳足迹与碳足迹计算器.pdf
  16. Codeforces #555 (Div. 3)--C2 Increasing Subsequence (hard version)--投石问路+deque/双指针
  17. 随机数生成器Random类
  18. 桌前检查、代码评审、走查
  19. 【NeurIPS100】谷歌、Facebook、斯坦福等十篇机器学习最新论文解读
  20. IAMP服务安装,论坛启动

热门文章

  1. linux内核学习之四:进程切换简述
  2. iOS web与JS交互
  3. 作品[RFileRead/WriteStream 练习] for s60 fp2
  4. 利用Log Explorer将你已经delete,truncate,drop过的数据进行恢复
  5. Log4Net 使用 FileAppender (log4net 1.2.10.0)
  6. 力的作用与形态的分类
  7. GAN与力学系统的海森伯图像
  8. python大数据论坛_干货 | Python+大数据计算平台,PyODPS架构手把手教你搭建
  9. python标准库有多强大_Python标准库——走马观花
  10. 3_ARM内核和架构都是什么意思,它们到底是什么关系?