数据结构中顺序栈的简单实现和简单操作的测试。
//顺序栈的简单实现
#include <iostream>
#define ElemType char
#define MaxSize 50
using namespace std;
//结构定义
typedef struct
{
ElemType data[MaxSize];
int top;
}SqStack;
//初始化
void InitStack(SqStack &st)
{
st.top=-1;
}
//判断栈空
int StackEmpty(SqStack st)
{
return (st.top==-1);
}
//进栈
int Push(SqStack &st,ElemType e)
{
if(st.top==MaxSize-1)
return 0;
st.top++;
st.data[st.top]=e;
return 1;
}
//出栈
int Pop(SqStack &st,ElemType &e)
{
if(st.top==-1)
return 0;
e=st.data[st.top];
st.top--;
return 1;
}
//取栈顶元素
int GetTop(SqStack &st,ElemType &e)
{
if(st.top==-1)
return 0;
e=st.data[st.top];
return 1;
}
//测试函数
int main()
{
ElemType e;
SqStack st;
InitStack(st);
ElemType a[10]={'w','h','v','m','a','i','o','p','f','l'};
cout<<"进栈之前判断栈空的返回值是:"<<StackEmpty(st)<<endl;
cout<<"进栈次序为:";
for(int i=0;i<10;i++)
{
Push(st,a[i]);
GetTop(st,e);
cout<<e<<" ";
}
cout<<endl;
cout<<"进栈之后判断栈空的返回值是:"<<StackEmpty(st)<<endl;
cout<<"出栈次序为:";
for(int i=0;i<10;i++)
{
Pop(st,e);
cout<<e<<" ";
}
cout<<endl;
cout<<"出栈之后判断栈空的返回值是:"<<StackEmpty(st)<<endl;
return 0;
}
运行结果如下: