描述如何只用一个数组来实现三个栈
2015-08-19 21:58
387 查看
题目:描述如何只用一个数组来实现三个栈
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];
}
相关文章推荐
- PostgreSQL Replication之第六章 监控您的设置(3)
- Android-所有权限说明
- 文章标题
- MongDB的安装和基本操作 二(增删改查)
- 关于输入框得到焦点时文本框清空,失去焦点时又显示默认文字,值发生改变时不再恢复默认文字的两种方法
- Java免锁数据结构
- tomcat支持的websocket服务
- STL源代码分析——STL算法sort排序算法
- PostgreSQL Replication之第六章 监控您的设置(2)
- objective-c 简要学习笔记
- 项目出现叹号(红色,黄色)
- eclipse中的所有快捷键
- Window下使用Xshell连接VirtualBox中CentOS SSH最佳实践
- Android SQLite的创建以及增删查改的实现
- QlikView同button控制转换图表类型(例如,变成一个垂直的条形图)
- 【运营】各大电商七夕活动对比
- const 的全面总结
- CoreOS Linux引入了Kubernetes kubelet
- PostgreSQL Replication之第六章 监控您的设置(1)
- 初次使用Eclipse的Maven插件时add dependency找不到包的解决办法