java实现栈

  今天用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());        
	      }               
	  }        
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值