要求:建立一个顺序栈和链栈,实现栈的压栈和出栈操作
1)顺序栈
#include <iostream>
using namespace std;
const int MAX=10;
class SeqStack{
private:
int top;
int data[MAX];
public:
SeqStack(){top=-1;}
~SeqStack(){}
void Push(int x);
int Pop();
int GetTop(){if (top!=-1) return data[top];};
int Empty();
};
void SeqStack::Push(int x){
if (top==MAX-1) throw "上溢";
top++;
data[top]=x;
}
int SeqStack::Pop(){
if (top==-1) throw "下溢";
int x=data[top];
top--;
return x;
}
int SeqStack::Empty(){
if (top==-1) return 1; else return 0;
}
int main(){
SeqStack S;
if (S.Empty())
cout<<"栈为空!"<<endl;
else
cout<<"栈不为空!"<<endl;
cout<<"15入栈:"<<endl;
S.Push(15);
cout<<"10入栈:"<<endl;
S.Push(10);
cout<<"取栈顶元素:"<<endl;
cout<<S.GetTop()<<endl;
cout<<"执行一次出栈操作:"<<endl;
S.Pop();
cout<<"栈顶元素为:"<<endl;
cout<<S.GetTop()<<endl;
return 0;
}
2)链栈:
#include <iostream>
using namespace std;
struct Data {
int data;
struct Data *next;
} *s;
class SeqStack{
private:
struct Data *top;
public:
SeqStack(){top=NULL;}
~SeqStack(){}
void Push(int x);
int Pop();
int GetTop(){if (top!=NULL) return top->data;};
int Empty();
};
void SeqStack::Push(int x){
s=new struct Data;
s->data=x;
s->next=top;
top=s;
}
int SeqStack::Pop(){
int x=top->data;
top=top->next;
return x;
}
int SeqStack::Empty(){
if (top==NULL) return 1; else return 0;
}
int main(){
SeqStack S;
if (S.Empty())
cout<<"栈为空!"<<endl;
else
cout<<"栈不为空!"<<endl;
cout<<"15入栈:"<<endl;
S.Push(15);
cout<<"10入栈:"<<endl;
S.Push(10);
cout<<"取栈顶元素:"<<endl;
cout<<S.GetTop()<<endl;
cout<<"一次出栈:"<<endl;
S.Pop();
cout<<"取栈顶元素:"<<endl;
cout<<S.GetTop()<<endl;
return 0;
}