您的位置:首页 > 其它

如何只用一个数组来实现三个栈

2016-11-11 16:29 316 查看


题目:描述如何只用一个数组来实现三个栈






int stackSize=100;
int [] buffer=new int [stackSize*3];
int []stackPointer={-1,-1,-1};//用于追踪栈顶元素的指针
void push(int stackNum,int value) throws Exception
{
/*检查有无空闲空间*/
if(stackPointer[stackNum]+1>=stackSize)//最后一个元素
{
throw new Exception("out of space.");
}
//栈指针自增,然后更新栈顶元素的值
stackPointer[stackNum]++;
buffer[absTopOfStack(stackNum)]=value;
}
int pop(int stackNum) throws Exception
{
if(stackPointer[stackNum]==-1)
{
throw new Exception("Trying to pop an empty stack.");
}
int value=buffer[absTopOfStack(stackNum)];//获取栈顶元素
buffer[absTopOfStack(stackNum)]=0;//清零指定索引元素的值
stackPointer[stackNum]--;//指针自减
return value;
}
int peek(int stackNum)
{
int index=absTopOfStack(stackNum);
return buffer[index];
}
boolean isEmpty(int stackNum)
{
return stackPointer[stackNum]==-1;
}
//返回栈“stackNum”栈顶元素的索引,绝对量

    int absTopOfStack(int stackNum)

    {

    return stackNum*stackSize+stackPointer[stackNum];

    }













内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐