【说明】 以下程序的功能是设计一个栈类stack<T>,并建立一个整数栈。 【程序】 #include < iostream. h > #include < stdlib. h > const int Max =20;//栈大小 template < class T > class stack{ //栈元素数组 T s[Max];//栈顶下标 int top; public: stack( ) { top =-1; //栈顶初始化为-1 } void push( const T &item); //item入栈 T pop( ); //出栈 int stackempty( ) const; //判断栈是否为 }; template < class T > void stack <T >::push(const T &item) { if(top== (1) ) { cout <<"栈满溢出" <<endl; exit(1); } top ++ s[top] = item; } template < class T > T stack<T> ::pop() { T temp; if(top== (2) ) { cout <<"栈为空,不能出栈操作" < < endl; exit(1); } temp =s[top]; top --; return temp; } template < class T > int stack < T >:: stackempty( ) const {return top == -1; { void main( ) { stack <int> st; int a[] ={1,2,3,4,5}; cout <<"整数栈" <<endl; cout <<"入栈序列:" <<endl; for(int i=0;i<4;i ++) { cout <<a[i] <<" "; (3) ; } cout << endl <<"出栈序列"; while( (4) ) tout<< (5) <<" "; cout< < endl; }
参考答案:
解析:(1)Max-1 (2)-1 (3)st.push(a[i]) (4)!st.stackempty() (5)st.pop() 本题用类模板方式定义一个栈类,其中有两个私有数据成员:s[](存放栈元素)和top(栈顶元素下标),以及3个公有成员函数: push(元素入栈)、Pop(元素出栈)和stackempty(判断栈是否为空)。 在函数push()中,首先要判断是否栈满。栈的大小为Max,数组的下标从。开始,所以栈满的条件是栈顶元素下标为Max-1,所以(1)空应填入“Max-1”。同样,在函数pop()中,首先要判断是否为空栈,由于栈顶初始化为-1,所以(2)空应填入“-1”。 在主函数中,先进行入栈操作,所以(3)空应填入“st.push(a [i])”。然后进行出栈操作,判断栈是否为空,调用对象的函数stackempty(),所以(4)空应填入“!st.stackempty()”。(5)空处调用出栈函数,所以应填入“st.pop()”。