您的位置:首页 > 编程语言 > Java开发

java实现栈

2016-04-15 11:59 477 查看
  今天用java的集合实现一个栈的功能,作为熟悉栈数据结构的学习也是不错的,代码如下:

/**
* 以ArrayList为基本结构实现栈
* @author Administrator
*
* @param <T>
*/
public class StackUtils<T> {

ArrayList<T> dataList;

int maxSize;
//栈顶指针 -1:空栈
int top;
public StackUtils(int maxSize) {
this.dataList = new ArrayList<T>();
this.maxSize = maxSize;
this.top = -1;
}

/**
* 入栈
* @param data
* @return
*/
public boolean push(T data) {
if(isFull()){
System.out.println("stack is full");
return false;
}
dataList.add(data);
top++;
return true;
}
/**
* 出栈
* @return
* @throws Exception
*/
public T pop() throws Exception {
if(isEmpty()){
throw new Exception("栈已空!");
}

return dataList.get(top--);
}
/**
* 栈是否满
* @return
*/
public boolean isFull() {

return top+1==maxSize;
}
/**
* 栈是否空
* @return
*/
public boolean isEmpty() {
return top == -1;
}

/**
* 栈数量
* @return
*/
public int getElementCount() {
return top+1;
}
/**
* 返回栈顶元素
* @return
* @throws Exception
*/
public T peek() throws Exception {
if(isEmpty()){
throw new Exception("栈已空!");
}
return dataList.get(top);
}

public static void main(String[] args) throws Exception {
StackUtils<String> stack=new StackUtils(1000);
stack.push(new String("1"));
stack.push(new String("2"));
stack.push(new String("3"));
stack.push(new String("4"));
stack.push(new String("5"));
System.out.println(stack.peek());

while(stack.top>=0)
{
System.out.println(stack.pop());
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: