【说明】
以下程序的功能是设计一个栈类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()”。