用c++实现顺序栈:
//顺序栈的实现
#include <iostream>
#include <string>
#define MAXSIZE 100
using namespace std;
struct Data
{
public:
int bookNum[MAXSIZE];
static int top ;
};
int Data::top = 0;
//顺序栈的初始化
Data* SeqStackInit()
{
Data *s = new Data;
s->top = -1;
return s;
}
//顺序栈的判空
int SeqStackEmpty(Data* s)
{
if (-1 == s->top)
{
return true;
}
else
return false;
}
//顺序栈的入栈
void SeqStackPush(Data* s, int x)
{
if ((MAXSIZE-1) == s->top)
{
cout <<"栈满!"<<endl;
}
s->top++;
s->bookNum[s->top] = x;
cout<<"入栈元素:"<<s->bookNum[s->top]<<endl;
}
//顺序栈的出栈
int SeqStackPop(Data* s)
{
int x;
if (-1 == s->top)
{
cout <<"栈空!"<<endl;
exit(0);
}
x = s->bookNum[s->top];
cout <<"出栈元素:"<<s->bookNum[s->top]<<endl;
s->top--;
return x;
}
//顺序栈中取出栈顶元素
int SeqStackGetTop(Data* s)
{
if (-1 != s->top)
return s->bookNum[s->top];
}
//顺序栈的长度
int SeqStackLength(Data* s)
{
int top1 = s->top;
int length = 0;
while(-1 != top1)
{
length++;
top1--;
}
return length;
}
int main()
{
Data* s = SeqStackInit();
cout <<"判空操作:"<<SeqStackEmpty(s)<<endl;
cout <<"入栈操作:"<<endl;
SeqStackPush(s,12);
SeqStackPush(s,23);
SeqStackPush(s,4);
SeqStackPush(s,78);
SeqStackPush(s,3);
cout <<"栈顶元素:"<<SeqStackGetTop(s)<<endl;
cout <<"栈的长度:"<<SeqStackLength(s)<<endl;
cout <<"出栈操作:"<<endl;
SeqStackPop(s);
cout <<"判空操作:"<<SeqStackEmpty(s)<<endl;
cout <<"栈顶元素:"<<SeqStackGetTop(s)<<endl;
return 0;
}