热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

面试题22:栈的压入、弹出序列

思路:如果下一个弹出的数字刚好是栈顶数字,则直接弹出。若下一个弹出的数字不在栈顶,则把压栈序列中还没有入栈的数字压入辅助栈,直到把下一个需要弹出的数字压入栈顶为止。若所有的数字都压入栈了仍

这里写图片描述

思路:如果下一个弹出的数字刚好是栈顶数字,则直接弹出。若下一个弹出的数字不在栈顶,则把压栈序列中还没有入栈的数字压入辅助栈,直到把下一个需要弹出的数字压入栈顶为止。若所有的数字都压入栈了仍没有找到下一个弹出的数字,则表明该序列不可能滴一个弹出序列。

#include 
#include 
#include 


using namespace std;


bool IsPopOrder(int *nPush, int *nPop, int length)
{
    if(nPush == NULL   || nPop == NULL  || length <0)
         return false;
stack<int> s;
int PushNum = 1;
int PopNum =0;
s.push(nPush[0]);

while(PopNum while (s.top() != nPop[PopNum]  &&  PushNum if(s.top() == nPop[PopNum])
    {
       PopNum++;
       s.pop();
    }
    else
    {
        return false;
    }
}

return true;
}


int main()
{
    int nPush[5] = {1,2,3,4,5};
    int nPop[5] = {4,5,3,2,1};
    int nPop1[5] = {4,5,2,3,1};

    bool result;
// result = IsPopOrder(nPush, nPop, 5);
    result = IsPopOrder(nPush, nPop1, 5);
    cout<

推荐阅读
author-avatar
马仔盛世焚花
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有