java实现一个栈
2016-09-22 10:29
141 查看
实现一个栈
栈是一个比较常用的数据结构 无论面试还是算法比赛follow me progress step by step:
初始化
入栈
出栈
获取栈顶
*判空
获取栈内元素个数/栈的大小
动态变长
用泛型使得代码变得适用性更强
异常处理
以下为具体实现代码
分为两个类 一个栈的实现类 一个测试类Stack.java
package arithmetic;
import java.util.Arrays;
/**
* what’s stack
* implements
* @author Administrator
*
*/
public class Stack {
private int size=0;
private Object[] array;
/**
* 默认初始化 默认构造方法
*/
public Stack(){
this(10);
}
/**
* 带参数构造方法
* @param i
*/
public Stack(int initialCapacity) {
if(initialCapacity<=0){
throw new RuntimeException(“初始化栈空间错误”);
}
array=new Object[initialCapacity];
}
/** * 入栈 */ public E push(E item){ ensureCapacityHelper(size+1); array[size++]=item; return item; } /** * 获取栈顶元素 */ public E peek(){ if(isEmpty()){ throw new IndexOutOfBoundsException("栈已经空"); } return (E) array[size-1]; } /** * 出栈 获取栈顶元素 */ public E pop(){ E item=peek(); size--; return item; } /** * 判空 */ private boolean isEmpty() { return size==0; } /** * 确保空间够用 */ private void ensureCapacityHelper(int minCapacity) { if(minCapacity>array.length){ //调用方法 扩容 grow(); } } /** * 动态扩容 */ private void grow(){ int oldCapacity=array.length; int newCapacity=oldCapacity*2; if(newCapacity<oldCapacity){ throw new OutOfMemoryError(); }else{ array=Arrays.copyOf(array,newCapacity); } }
}
test.java
package arithmetic;
public class test {
public static void main(String[] args) { Stack<String> s=new Stack<String>(); s.push("abc"); s.push("bcde"); System.out.println(s.pop()); System.out.println(s.peek()); }
}
相关文章推荐
- 一个实现排列和组合的JavaBean
- 用JAVA实现一个分页类
- 一个用Dijkstra算法实现的路由算法的java程序——6 STDijkstraAdv类
- 推荐一个关于AOP的AOP@WORK的专栏作者的AOP专题系列文章,主要关于Java下的AOP实现,毕竟Java下的AOP实现确实要比.Net下成熟得多,共12篇
- 推荐一个关于AOP的AOP@WORK的专栏作者的AOP专题系列文章,主要关于Java下的AOP实现,毕竟Java下的AOP实现确实要比.Net下成熟得多,共12篇
- 今天的问题:一个简单的例子,请帮我解开“接口实现Java‘隐藏实现细目’”的迷惑。
- JSP+JavaBean+Servlet实现一个留言板
- 一个用Dijkstra算法实现的路由算法的java程序——4 MapCanvas类
- 一个实现MD5的简洁的java类
- Java实现压缩一个目录下所有图片文件
- Java.NET --一个基于Java的Microsoft.NET框架的实现
- 一个简单的用JAVA实现的屏幕抓图(源代码)
- java和jdom实现的一个地址簿源码
- 一个用Dijkstra算法实现的路由算法的java程序——5 GraphShow类
- 一个用Dijkstra算法实现的路由算法的java程序——1 GraphAdjList类
- 一个实现MD5的简洁的java类 Jagie 原创
- 一个将数据文件转换成excel文件打印的java实现方法的代码片断(Struts+poi)
- 一个实现MD5的简洁的java类
- 一个用Dijkstra算法实现的路由算法的java程序——9 图信息文件示例
- 一个用Dijkstra算法实现的路由算法的java程序——8 GraphMain类