Java实现栈-两栈共享空间
2017-09-26 15:47
579 查看
大话数据结构中以合租房子为例,来比喻两栈共享空间这种结构,我想说得已经比较清楚了,在Java实现中,我们定义一个数组作为基准存储容器,两个栈,栈1的栈底是在数组的始端,栈2的栈底在数组的顶端,两个栈在push元素时候主键朝数组的中间靠拢,当栈1的栈顶top1+1=栈2 栈顶top2,那么此时栈满;
下面上代码:
下面上代码:
public class BothStackShareMemory { private Object[] array;//定义一个数组存储 private int stackSize;//栈长度 private int top1;//第一个栈的栈顶指针 private int top2;//第2个栈的栈顶指针 /** * 初始化构建栈 */ public BothStackShareMemory() { stackSize = 10; array = new Object[stackSize]; top1 = -1; top2 = stackSize;//都是空栈 } /** * 压栈 * * @param stackNum * @param element * @return */ public boolean push(int stackNum, Object element) { if (top1 + 1 == top2) { System.out.println("栈满"); return false; } if (stackNum == 1) { top1++; array[top1] = element; } else { top2--; array[top2] = element; } return true; } /** * 弹栈 * * @param stackNum * @param element * @return */ public boolean pop(int stackNum, Object element) { if (top1 == -1 || top2 == stackSize) { System.out.println("栈为空"); return false; } if(stackNum == 1){ array[top1] = null; top1--; return true; }else { array[top2] = null; top2++; return true; } } /** * 判断是否为空 * * @param i * @return */ public boolean isEmpty(int i) { if (i == 1) { if (top1 == -1) { return true; } else { return false; } } else { if (top2 == stackSize) { return true; } else { return false; } } } /** * 获取栈顶元素 * * @param i * @return */ public Object peek(int i) { if (i == 1) { if(top1 == -1){ System.out.println("栈为空"); return null; } return array[top1]; } else { if(top2 == stackSize){ System.out.println("栈为空"); return null; } return array[top2]; } } public static void main(String[] args) { BothStackShareMemory memory = new BothStackShareMemory(); // memory.push(1,111); System.out.println(memory.peek(1)); } }
相关文章推荐
- 两栈共享空间(java实现)
- 顺序栈的实现和两栈共享空间
- 两栈共享空间的实现
- C语言实现两栈空间共享
- 两栈共享空间的c语言实现
- C++类模板 实现两栈共享数组空间的算法 《数据结构》(北京科海) 自己摘抄完成
- 数组实现栈和两栈共享空间
- C++数据结构:栈——顺序栈实现的之二:两栈共享空间
- 内核和用户空间共享内存的实现例程-proc和mmap
- Java实现的TFIDF空间向量查询方法
- 共享一篇红薯大哥在2002年在IBM上的“使用 JAVA 中的动态代理实现数据库连接池”
- 我想了解下 java视频会议远程文档共享 实现的机制 谁能帮我解释下
- java 中的多线程 内部类实现 数据共享 和 Runnable实现数据共享
- java-线程-线程内共享变量的实现
- 内核和用户空间共享内存的实现例程-proc和mmap
- Linux的内核空间和用户空间通过内存共享来进行通信的实现
- 内核和用户空间共享内存的实现例程-proc和mmap(zt)
- 基于NETLINK的内核与用户空间共享内存的实现[转]
- 内核和用户空间共享内存的实现例程-proc和mmap
- java 中的多线程 内部类实现 数据共享 和 Runnable实现数据共享