栈的Java实现(顺序存储实现与链式存储实现)
来源:互联网 发布:情趣内衣淘宝网卖家秀 编辑:程序博客网 时间:2024/05/01 06:53
首先,定义栈空的异常类型:
class StackEmptyException extends RuntimeException{public StackEmptyException(String err){super(err);}}
然后,定义Stack接口
interface Stack{public int getSize();public boolean isEmpty();public void push(Object obj);public Object pop() throws StackEmptyException;public Object peek() throws StackEmptyException;}
class StackArray implements Stack{private final int MaxSize = 10; private Object[] stack;private int top;public StackArray(){stack = new Object[MaxSize];top = -1;}public int getSize(){return top + 1;}public boolean isEmpty(){return top == -1;}public void push(Object obj){if(getSize() >= stack.length)resizeSpace();stack[++top] = obj;}private void resizeSpace(){Object[] resizeArray = new Object[stack.length*2];for(int i = 0; i < stack.length;++i)resizeArray[i] = stack[i];stack = resizeArray;}public Object pop() throws StackEmptyException{if(getSize() < 1)throw new StackEmptyException("Error!the stack is empty");Object tmp = stack[top];stack[top--] = null;return tmp;}public Object peek(){if(getSize() < 1)throw new StackEmptyException("Error!the stack is empty");return stack[top];}}栈的链式存储实现
class SLNode{Object data;SLNode next;public SLNode(Object e){data = e;next = null;}}class StackSLinked implements Stack{private SLNode top;private int size;public StackSLinked(){top = null;size = 0;}public int getSize(){return size;}public boolean isEmpty(){return size == 0;}public void push(Object obj){SLNode tmp = new SLNode(obj);tmp.next = top;top = tmp;size++;}public Object pop() throws StackEmptyException{if(size < 1)throw new StackEmptyException("error!The stack is empty");Object tmp = top.data;top = top.next;size--;return tmp;}public Object peek() throws StackEmptyException{if(size < 1)throw new StackEmptyException("error!The stack is empty");return top.data;}}
- 栈的Java实现(顺序存储实现与链式存储实现)
- 栈的顺序存储实现和链式存储实现
- C++栈的顺序存储和链式存储的实现
- 栈的顺序存储及链式存储的分别实现
- 队列的顺序存储实现和链式存储实现
- 线性表的顺序存储实现和链式存储实现
- 二叉树的顺序存储和链式存储结构(java实现)
- 栈的链式存储实现
- 栈的链式存储实现
- 栈的链式存储实现
- 线性表 顺序存储 链式存储 ---java实现
- 栈---链式存储实现
- 【线性表】顺序存储、链式存储的实现及操作
- 串的链式存储表示与实现
- 线性表的链式存储与实现
- Java实现链式存储的线性表
- java实现树(链式存储)
- 队列(链式存储) java实现
- 一片冰心入素笺
- Android实现获取本机中所有图片
- 如何用git reflog和git cherry-pick找回已删除的commit记录
- 无法debug sp
- uva 674Coin Change(完全背包)
- 栈的Java实现(顺序存储实现与链式存储实现)
- uva 147 Dollars(完全背包)
- Android Dialog用法
- 整理的opencv2.4.5—sample—adaptiveskindetector.cpp文件更简洁形式
- 黑马程序员_正则表达式
- 理解Fragment生命周期
- android之Fragment(官网资料翻译)
- javascript深入之动态添加样式规则
- Android中Toast显示时间的自定义