码迷,mamicode.com
首页 > 编程语言 > 详细

一个数组构造两个堆栈

时间:2015-04-09 21:50:51      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

***用一个数组表示两个堆栈,最大限度的利用空间

0 1 2 3

若果像右图中从中间分成两部分,则可能存在其中一个堆栈满了,而另一个堆栈还有空的,为你最大限度的利用空间,需要两边像中间长,知道指针碰头表示堆栈已满

#include<iostream>
using namespace std;
#define Maxsize 100
class stack
{
public:
int a[Maxsize];
int top1;
int top2;
};
void push(stack&A, int x, int Tag);
int pop(stack&A, int Tag);
int main()
{
stack A;
A.top1 = -1; //从数组开头开始长
A.top2 = Maxsize; //从数组末尾长
return 0;
}
void push(stack&A, int x, int Tag)
{
if (A.top2 - A.top1 == 1){ //这样才能最大限度的利用数组空间
cout << "堆栈已满";
return;
}
if (Tag == 1){ //Tag==1表示前面一个堆栈
A.top1++;
A.a[A.top1] = x;
}
else{
A.top2--;
A.a[A.top2] = x;
}
}
int pop(stack&A, int Tag)
{
if (Tag == 1){
if (A.top1 == -1){
cout << "堆栈已空" << endl;
return 0;
}
int l = A.a[A.top1];
A.top1--;
return l;
}
else{
if (A.top2 ==Maxsize){
cout << "堆栈已空" << endl;
return 0;
}
int m = A.a[A.top2];
A.top1++;
return m;
}
}

一个数组构造两个堆栈

标签:

原文地址:http://www.cnblogs.com/td15980891505/p/4411927.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!