数据结构(数组实现)双端栈
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构(数组实现)代码:
//利用数组实现双端栈
#include
using namespace std;
const int size=50;
typedef int StackElement;
class DoubleStack
{
private:
StackElement array[size];
int frontTop;
int backTop;
public:
DoubleStack()
{
frontTop=-1;
backTop=size;
}
bool empty() const;
bool full() const;
void frontPush(StackElement item);//前端入栈
void backPush(StackElement item);//后端入栈
void frontPop(); //前端出栈
void backPop(); //后端出栈void display();
};
bool DoubleStack ::empty() const
{
if(frontTop==-1&&backTop==size)
{
cout<<"栈已满"< return true; } else { return false; } } bool DoubleStack :: full() const { if(frontTop>=backTop-1) { cout<<"栈全空"< return true; } else { return false; } } void DoubleStack ::frontPush(StackElement item) { frontTop+=1; if(!full()) { array[frontTop]=item; } } void DoubleStack ::backPush(StackElement item) { backTop-=1; if(!full()) { array[backTop]=item; } } void DoubleStack ::frontPop() { if(!empty()) { frontTop-=1; cout<<"前端栈出栈成功!"< } } void DoubleStack ::backPop() { if(!empty()) { backTop+=1; cout<<"后端栈出栈成功!"< } } void DoubleStack ::display() { cout<<"前端栈:"; int i=0,j=0; while(i<=frontTop) { if(j%5==0) cout< cout< j++; i++; } cout< i=size-1; j=0; cout<<"后端栈:"; while(i>=backTop) { if(j%5==0) cout< cout< j++; i--; } cout< } void main(void) { //初始化双端栈 DoubleStack *s; s=new DoubleStack; int temp; int t=-1; cout<<"选项: 1-前端入栈2-后端入栈3-前端出栈4-后端出栈5-双端栈显示"< while(1) { cout<<"输入选项:"; cin>>t; if(t==1) { cout<<"输入入栈元素:"; cin>>temp; s->frontPush(temp); } else if(t==2) { cout<<"输入入栈元素:"; cin>>temp; s->backPush(temp); } else if(t==3) { s->frontPop(); } else if(t==4) { s->backPop(); } else if(t==5) { s->display(); } else cout<<"请重新输入:"< } } 截图: