北京金明仕饮料设备:有关堆栈的问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/01 23:07:24
我们留了一道上机题:设计一个栈,按a,b,c,d,e....顺序将元素入栈,输出出栈元素的所有可能排列情况。
堆栈类我已经做出来了:
#include <iostream>
#include <stdlib.h>
using namespace std;
const int MaxStackSize=50;
template <class T>
class Stack
{
private:
T StackList[MaxStackSize];
int top;
public:
Stack(void);
void Push(const T& item);
T Pop(void);
void ClearStack(void);
T Peek(void) const;
int StackEmpty(void)const;
int StackFull(void) const;
};
template <class T>
Stack<T>::Stack (void):top(-1)
{}
template <class T>
void Stack<T>::Push(const T&item)
{
if(top==MaxStackSize-1)
{
cerr<<"Stack overflow!"<<endl;
exit(1);
}
top++;
StackList[top]=item;
}
template <class T>
T Stack<T>::Pop(void)
{
T temp;
if (top==-1)
{
cerr<<"Attempt to pop an empty stack!"<<endl;
exit(1);
}
temp=StackList[top];
top--;
return temp;
}
template <class T>
T Stack<T>::Peek(void) const
{
if(top==-1)
{
cerr<<"Attempt to peek an empty stack!"<<endl;
exit(1);
}
return StackList[top];
}
template <class T>
int Stack<T>::StackEmpty (void) const
{
return top==-1;
}
template <class T>
int Stack<T>::StackFull(void) const
{
return top==MaxStackSize-1;
}
template <class T>
void Stack<T>::ClearStack (void)
{
top=-1;
}
然后怎么做,请高手指点。万分感谢!