程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++:檢查出棧順序的合法性

C++:檢查出棧順序的合法性

編輯:關於C++
CheckSequence.cpp
 
#include<iostream>
#include <assert.h>
using namespace std;
#include <stack>
bool Checksequence(int *stackIn, int *stackOut,int lenIn,int lenOut){
 assert(stackIn && stackOut);
 if (lenIn != lenOut)         //兩個序列長度不相等,不合法
  return false;
 stack<int> s;
 for (int i = 0; i < lenIn; i++){
  int j = 0;
  s.push(stackIn[i]);
  while (s.size() > 0 && s.top() == stackOut[j]){       //入棧序列棧頂元素與當前出棧序列元素不相等,不合法
   s.pop();
   j++;
  }
 }
 return (s.size()>0) ?false:true;                //當所有出棧序列元素都匹配完之後,棧不為空,不合法
}
int main(){
 int stackIn[] = { 1, 2, 3, 4, 5 };       //入棧序列
 int stackOut[] = { 5, 4, 2, 3, 1 };      //出棧序列
 int len_in = sizeof(stackIn) / sizeof(stackIn[0]);      //入棧序列長度
 int len_out = sizeof(stackOut) / sizeof(stackOut[0]);   //出棧序列長度
 bool ret = Checksequence(stackIn, stackOut,len_in,len_out);
 if (ret)
  cout << "出棧順序合法" << endl;
 else
  cout << "出棧順序不合法" << endl;
 return 0;
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved