今天编了顺序栈的简单实现,同样是vs2013
没什么错误 ,由于有了上次编单链表的经验,比较顺利地完成
下边是实现代码,实现了入栈,弹栈,查看栈顶元素三个功能
AStack.h
#ifndef H
#define H
#include<iostream>
using namespace std;
class AStack{
private:
int size;
int *stackArray; //数组
int top;
public:
AStack(int MaxStackSize); //构造函数
~AStack(); //析构函数
bool Push(const int& item); //压栈
bool Pop(); //出栈
bool Peek()const; //存取
int IsEmpty()const{return top==-1;} //栈为空?
int IsFull()const{return top==size-1;} //栈为满?
};
#endif
AStack.cpp
#include"AStack.h"
AStack::AStack(int MaxStackSize){ //构造函数
size=MaxStackSize;
stackArray=new int[MaxStackSize];
top=-1;
}
AStack::~AStack(){ //析构函数
delete[] stackArray;
}
bool AStack::Push(const int& item){ //压栈
if(IsFull()){ //栈满情况
cout<<"栈已满"<<endl;
return false;
}
top+=1; //栈未满情况
stackArray[top]=item;
return true;
}
bool AStack::Pop(){ //弹栈
if(IsEmpty()){ //栈空情况
cout<<"栈已空"<<endl;
return false;
}
int item; //栈未空情况
item=stackArray[top];
top-=1;
cout<<"弹出数据为:"<<item<<endl;
return true;
}
bool AStack::Peek()const{ //存取
if(IsEmpty()){ //栈空情况
cout<<"栈已空"<<endl;
return false;
}
int item; //栈未空情况
item=stackArray[top];
cout<<"栈顶元素为:"<<item<<endl;
return true;
}
main.cpp
#include"AStack.h"
int main(){
int size;
cout<<"请输入要创建的栈的大小:"<<endl;
cin>>size;
AStack oneStack(size);
while(true){
cout<<"请选择:"<<endl;
cout<<"1.插入 2.删除 3.存取 4.退出"<<endl;
int i;
cin>>i;
if(i==1){ //压栈
cout<<"请输入要插入的数据:"<<endl;
int item;
cin>>item;
oneStack.Push(item);
}
else if(i==2){ //弹栈
oneStack.Pop();
}
else if(i==3){ //存取
oneStack.Peek();
}
else //退出
break;
}
return 0;
}