数据结构(数组实现)双端栈

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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<<"请重新输入:"<

}

}

截图:

相关文档
最新文档