首页 > 其他分享 >堆栈

堆栈

时间:2023-05-07 21:55:06浏览次数:27  
标签:stin int pop 队列 stout 堆栈 empty

递归函数:直接或间接调用自己的函数就叫递归函数

递归与迭代的区别:

递归使用的是选择结构

迭代使用的是循环结构

栈的应用

1、将中缀表达式转化为后缀表达式

2、将后缀表达式转化为中缀表达式

撤销、回退都是通过栈来实现的

 

栈不允许有遍历行为,但是可以求empty()和size()

队列也不允许有遍历行为

 

堆栈LIFO

队列FIFO

 

题目:

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):

实现 MyQueue 类:

void push(int x) 将元素 x 推到队列的末尾
int pop() 从队列的开头移除并返回元素
int peek() 返回队列开头的元素
boolean empty() 如果队列为空,返回 true ;否则,返回 false

class MyQueue {
public:

    stack<int> stin;
    stack<int> stout; 

    MyQueue() {

    }
    
    void push(int x) {
        stin.push(x);
    }
    
    int pop() {
        //前提stout为空
        if(stout.empty())
        {
            while(!stin.empty())//将stin中的数全部移入stout
            {
                stout.push(stin.top());
                stin.pop();
            }

        }
            int result=stout.top();//先移入stout中再在stin中移除
            stout.pop();
            return result;


    }
    
    int peek() {
        int result=this->pop();//直接利用pop()函数
        stout.push(result);//注意要在stout中
        return result;
    }
    
    bool empty() {
        if(stin.empty() && stout.empty())
        {
            return true;
        }

        return false;

    }
};

 

标签:stin,int,pop,队列,stout,堆栈,empty
From: https://www.cnblogs.com/gaishuobulao/p/17380257.html

相关文章

  • Provisional heads are shown、NullPointerException空指针异常?堆栈与队列的区别?Java
    Provisionalheadsareshown排查是否插件拦截,我的以前没有这种,所以排除本地网络节点问题,连接不到图片服务器,以下是解决方法:1.进入到C盘Windows文件夹System32/drivers/etc目录下,打开hosts文件,绑定下2.改下本地dns为公共dns网络节点导致的问题,一般为运营商导致,产生问题的原因为......
  • gson对类进行序列产生堆栈溢出
    1,gson对类进行序列号时产生如下错误现象:Handlerprocessingfailed;nestedexceptionisjava.lang.StackOverflowError原因:gson解析的类存在递归嵌套解决办法:去除嵌套即可......
  • java堆栈方法区
    原文地址zhuanlan.zhihu.comjava堆栈方法区残枫cps​目录收起栈区堆区方法区栈区栈区描述的是方法执行的内存模型。每个方法在执行时都会创建一个栈帧(存放存储局部变量、操作数栈、动态链接、方法出口等)JVM为每个线程创建一个栈,栈属于线程私有,不能实现线程间的共享!用......
  • 【调试】Valgrind内存泄漏内存越界|运行时间|调用|cache命中率|多线程竞态|堆栈分析..
    目录即看即用详细简介Valgrind工具详解安装使用检测内存泄漏其他内存问题memcheck工具的常用选型其他选项附录其他类似工具实例分析:03.使用未初始化的内存04.使用野指针05.动态内存越界访问06.分配空间后没有释放07.不匹配使用delete或者free08.两次......
  • 实战-JAVA应用程序CPU占用率飙升,定位线程的堆栈信息
    分以下几个步奏:(1)使用命令top-p<pid>,显示你的java进程的cpu情况,pid是你的java进程号,比如14203。(使用jps可以获取到java的进程id或者top直接查看)(2)按H,获取每个线程的CPU情况。(shirt+H)(3)找到内存和cpu占用最高的线程tid,比如14204。(4)转为十六进制得到377C,此为线程id的十六进......
  • 逆向——C语言的汇编表示之堆栈图 手把手示例 可以考虑在函数内部加一个局部变量来综
    课程概要来自:https://gh0st.cn/Binary-Learning/C%E8%AF%AD%E8%A8%80.html写得非常详细本章课程需要具备汇编语言基础,若无汇编语言基础是无法去理解课程中所讲的一些知识点和技术细节的;同时也表示本课程是以汇编语言来理解C语言,透过本质理解高级语言。关于本节课的环境:VC6,VC6......
  • C语言逆向汇编——参数局部变量、函数堆栈、调用约定和内嵌汇编码
    第一节1.1C语言1、注意参数和局部变量在堆栈中的存储方式2、参数在调用函数前就已经存入堆栈,从[EBP+8]、[EBP+C]、……开始。3、局部变量是在调用函数后,存入缓冲区里,从[EBP-4]、[EBP-8]、……开始4、函数运算得到的结果,通常存在EAX里。        第一......
  • 堆栈分析-常见服务器问题
    一、常见服务器问题定位:1、常见服务器问题:日常开发中,我们常见的服务器问题主要可以归类为一下几种::CPU过载问题内存过高问题磁盘IO问题网络问题2、服务器问题定位总体思......
  • Solr指定的堆栈大小报错
    Thestacksizespecifiedistoosmall,Specifyatleast328kError:CouldnotcreatetheJavaVirtualMachine.Error:Afatalexceptionhasoccurred.Programw......
  • 天梯赛练习题 L3-002 特殊堆栈(stl)
    https://pintia.cn/problem-sets/994805046380707840/exam/problems/994805053695574016输入样例:17PopPeekMedianPush3PeekMedianPush2PeekMedianPush1PeekM......