POJ——栈的基本操作(AC)

来源:互联网 发布:阿里云控制面板 编辑:程序博客网 时间:2024/04/29 10:00
#include <iostream>#include <string>#define CAPACITY_DEFAULT   100 #define TEST_GROUP_MAX     100typedef 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();elsecout << "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;}}}

原创粉丝点击