C++数据结构
栈的顺序结构与操作
定义一个顺序栈,可以对顺序栈进行“将某个元素入栈”、“弹出栈顶元素”、“取栈顶元素(不删除)”、“判断栈是否为空”、“清空栈”等操作。键盘输入一些命令,可以执行上述操作。本题中,顺序栈元素为字符,顺序栈的最大长度为10。
#include
using namespace std;
const int StackSize = 10;
class SeqStack
{
public:
SeqStack();
void Push(char x);
char Pop();
char GetTop();
int Empty();
void Clear();
private:
char data[StackSize];
int top;
};
SeqStack::SeqStack()
{
top = -1;
}
void SeqStack::Push(char x)
{
if (top == StackSize - 1) {
throw"None";
}
data[++top] = x;
}
char SeqStack::Pop() {
if (top == -1) {
throw"None";
}
return data[top--];
}
char SeqStack::GetTop() {
if (top == -1) {
throw"None";
}
return data[top];
}
int SeqStack::Empty() {
int i = 0;
if (top == -1) {
i = 1;
}
return i;
}
void SeqStack::Clear() {
top = 1;
}
int main()
{
char T;
SeqStack S;
while (1)
{
cin >> T;
if (T == 'P') {
cin >> T;
try
{
S.Push(T);
}
catch (const char *str)
{
cout << str << endl;
}
}
else if (T=='D')
{
try
{
cout << S.Pop() << endl;
}
catch (const char* str)
{
cout << str << endl;
}
}
else if (T=='G')
{
try
{
cout << S.GetTop() << endl;
}
catch (const char* str)
{
cout << str << endl;
}
}
else if (T=='T')
{
S.Clear();
}
else if (T == 'Y') {
int i = S.Empty();
if (i == 1) {
cout << "Yes" << endl;
}
else
{
cout << "No" << endl;
}
}
else
{
break;
}
}
}