#include <iostream>
#include <string>
#define CAPACITY_DEFAULT 100
#define TEST_GROUP_MAX 100
typedef int ElementType;
using namespace std;
class Stack{
public:
Stack(void){
top_ = 0;
array = new ElementType [ CAPACITY_DEFAULT ];
}
Stack(int capacity){
top_ = 0;
array = new ElementType [ capacity ];
}
~Stack(void){
delete[] array;
}
void MakeEmpty(void){
top_ = 0;
}
void RevertOutput(void){
for ( int i=0; i<top_; i++ )
std::cout << array[ i ] << " ";
std::cout << std::endl;
}
void Push(ElementType e){
array[ top_++ ] = e;
}
ElementType Pop(void){
return array[ --top_ ];
}
int IsEmpty(void){
return top_ <= 0;
}
int IsFull(void){
return top_ >= capacity_;
}
private:
int capacity_;
int top_;
ElementType *array;
};
int _err_table[ TEST_GROUP_MAX ] = { 0 };
//Stack _stack[ TEST_GROUP_MAX ];
Stack *_stack;
void GroupTest(int grp);
int main(int argc, char**argv){
int i;
int group;
cin >> group;
_stack = new Stack [ group ];
for ( i=0; i<group; i++){
GroupTest(i);
}
for ( i=0; i<group; i++ ){
if ( _err_table[ i ] == 0 )
_stack[ i ].RevertOutput();
else
cout << "error" << endl;
}
delete[] _stack;
return 0;
}
void GroupTest(const int grp){
int i;
int num;
int k;
string str;
cin >> num;
for ( i=0; i<num; i++ ){
cin >> str;
if ( str == "push" ){
cin >> k;
_stack[ grp ].Push(k);
}else if ( !_stack[grp].IsEmpty() ){
_stack[ grp ].Pop();
}else{
_err_table[ grp ] = 1;
}
}
}
POJ——栈的基本操作(AC)
最新推荐文章于 2021-07-18 12:51:58 发布