Java链表与数组实现栈

public class LinkStack<T> {
	Node<T> top;
	private int mSize;
	
	public LinkStack() {

	}
	
    boolean addNode(Node<T> node){
		if(node == null){
			return false; 
		}
		if (top == null) {
			top = node;
		}else {
			node.next = top;
			top = node;
		}
		mSize++;
		return true;
	}
    Node<T> popNode() throws Exception{
  		if(mSize == 0){
  			throw new Exception("has no node can be poped");
  		}
  		Node<T> currentNode = top;
  		top = top.next;
  		mSize--;
  		currentNode.next = null;
  		return currentNode;
  		
  	}

	public int getSize() {
		return mSize;
	}

	public boolean isEmpty(){
		return mSize == 0 ? true : false;
	}
}
class ArrayStack<T>{
	  T[] stack;
	  int mMax;
	  int mSize;
	  public ArrayStack(int max) {
		  mMax = max;
		  stack = (T[]) new Object[mMax];
	  }
	  boolean addNode(Node<T> node){
			if(node == null){
				return false; 
			}
			if(mSize == mMax){
				stack = Arrays.copyOf(stack, mMax * 2);
				mMax *= 2;
			}
			stack[mSize] = (T) node;
			mSize++;
			return true;
		}
	    Node<T> popNode() throws Exception{
	  		if(mSize == 0){
	  			throw new Exception("has no node can be poped");
	  		}
	  		Node<T> currentNode = (Node<T>) stack[mSize - 1];
	  		mSize--;
	  		return currentNode;
	  		
	  	}

		public int getSize() {
			return mSize;
		}

		public boolean isEmpty(){
			return mSize == 0 ? true : false;
		}
}

class Node<T>{
	  T data;
	  Node<T> next;
	  public Node(T data) {
		  this.data = data;
	  }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值