//栈的顺序储存结构
//顺序栈类的定义
typedef int ElemType;
const int MAXSIZE = 100;
class SqStack
{
private:
ElemType elem[MAXSIZE];
int top;
public:
SqStack()
{
top = 0;
}
~SqStack()
{
};
void SetEmpty()
{
top = 0; //置栈为空
}
int IsEmpty(); //判断栈是否为空
void push(ElemType e); //进栈
ElemType pop(); //出栈
void PrintOut(); //输出栈顶元素
ElemType Getpop(); //取出栈顶元素
};
void SqStack::PrintOut()
{
cout << "\n PrintfOut Data \n";
if (top == 0) cout << "\n 已是空栈";
else
{
for (int k = top; k >= 1; k--)
{
cout << setw(6) << elem[k];
cout << endl;
}
}
}
//进栈 先判断栈是否满了 指针先自加,再让元素进栈
void SqStack::push(ElemType e)
{
if (top == MAXSIZE - 1)
cout << "\n 栈满溢出"<<endl;
else
{
top++;
elem[top] = e;
}
}
//判断是否为空
int SqStack::IsEmpty()
{
if (top == 0)
return 1;
else
{
return 0;
}
}
//出栈 先判断栈是否为空
ElemType SqStack::pop()
{
ElemType x;
if (top == 0)
{
cout << "\n 栈为空,不能进行出栈操作" << endl;
x = 0;
}
else
{
x = elem[top];
top--;
}
return x;
}
//取栈顶元素
ElemType SqStack::Getpop()
{
ElemType x;
if (top == 0)
{
cout << "\n 栈为空,不能进行取栈值操作" << endl;
x = 0;
}
else
{
x = elem[top];
}
return x;
}
int main()
{
std::cout << "Hello World!\n";
ElemType e1,e2, x;
SqStack S;
cout << "\n 顺序表储存结构演示";
cin >> e1;
S.push(e1);
cin >> e2;
S.push(e2);
S.PrintOut();
x = S.Getpop();
S.PrintOut();
x = S.pop();
S.PrintOut();
return 0;
}
这里采用静态一维数组,声明数组时就给定了数组的大小。
下图为栈的顺序储存结构