关于元素出栈、入栈顺序的合法性的事儿

来源:互联网 发布:单片机定时器中断程序 编辑:程序博客网 时间:2024/06/06 13:57

要实现栈的出栈、入栈当然少不了使用栈,故一定要记得引入其头文件,否则……

对于栈来说,它的入栈顺序和其出栈顺序密切相关,比其先入栈的元素肯定比其后出栈,因为一定的遵守“先进后出”原则;

比如:入
入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)—-则合法;
入栈的序列(1,2,3,4,5),出栈序列为(4,5,2,3,1)—-则不合法;

bool IsStack(const int* pPush,const int*pPop,int length){      std::stack<int> stack;//定义一个栈      bool poll=false;//这个栈未被使用      if(NULL!= pPush&&NULL!=pPop&&length>0)      {          const int* pNextPush=pPush;//保存入栈的序列          const int* pNextPop=pPop;//保存出栈的序列          while(pNextPop-pPop<length)         {            while(stack.empty()||stack.top()!= *pNextPop)            {                if(pNextPush-pPush==length)                    break;                stack.push(*pNextPush);                pNextPush++;            }           if(stack.top()!=*pNextPop)              break;           stack.pop();           pNextPop++;         }         if(stack.empty()&&pNextPop-pPop==length)             poll=true;    }    return poll;}
原创粉丝点击