本程序自定义了栈类cMyStack的模板,请完成进栈push( )、出栈pop()的实现和主函数main()中要求实现的部分。 #include<iostream> using namespace std; const int SIZE=10; //栈的大小 template<class T> //类模板定义 class cMyStack { private: T stk[SIZE]; //用一维数组作为栈的存储空间 int top; //表示栈顶 public: cMyStack(){ top=-1; } //构造函数,空栈则top= =-1 void push(T e); //进栈函数,未实现 T pop(); //出栈函数,未实现 bool IsEmpty() //判断栈是否为空 { if(top<0) return 1; else return 0; } }; //编程任务:实现push( )函数、pop()函数 void main() { //编程任务:定义处理char类型元素的栈charStack,将字符’A’,’B’,…,’J’依次加入栈 //charStack后,再依次出栈,直到栈为空。 }
时间: 2024-01-05 11:03:11 浏览: 68
下面是进栈push()和出栈pop()的实现:
```c++
template<class T>
void cMyStack<T>::push(T e)
{
if (top == SIZE - 1) //栈已满
{
cout << "Stack is full!" << endl;
return;
}
else
{
top++; //栈顶指针加1
stk[top] = e; //将新元素入栈
}
}
template<class T>
T cMyStack<T>::pop()
{
if (top == -1) //栈为空
{
cout << "Stack is empty!" << endl;
return NULL;
}
else
{
T temp = stk[top]; //取出栈顶元素
top--; //栈顶指针减1
return temp;
}
}
```
主函数main()中要求实现的部分:
```c++
int main()
{
//定义处理char类型元素的栈charStack
cMyStack<char> charStack;
//将字符'A','B',...,'J'依次加入栈charStack
for (char c = 'A'; c <= 'J'; c++)
{
charStack.push(c);
}
//依次出栈,直到栈为空
while (!charStack.IsEmpty())
{
cout << charStack.pop() << " ";
}
return 0;
}
```
完整代码如下:
阅读全文