栈-自定义实现

package com.heart.datastruc;
/**
 * 基于数组实现的顺序栈。
 * @param <E>
 *
 */
public class Stack<E> {
	private Object[] data = null;
	/**栈的容量*/
	private int maxSize = 0;
	/**栈顶指针*/
	private int top = -1;
	/**构造器:根据指定的大小 */
	Stack() {
		this(10);//默认栈的大小为10
	}
	Stack(int initSize){
		if(initSize >=0) {
			this.maxSize = initSize;
			data = new Object[initSize];
			top = -1;
		}else {
			throw new RuntimeException();
		}
	}
	
	/**
	 * 入栈
	 * @param
	 */
	public boolean push(E e) {
		if(top <= maxSize -1) {//因为指针从0开始计算。
			throw new RuntimeException("Stack is full and cannot push");
		}else {
			data[++top] = e;//①
			return true;
		}
	}
	
	/**
	 * 出栈,由栈顶移出一个元素
	 * @return
	 */
	public E pop() {
		if(top <= -1) {//移出前先判断栈顶是否有数据。
			throw new RuntimeException("Stack is empty!");
		}else {
			return (E)data[top--];//② 将栈顶数据移出并之后top减去1
		}
	}
	
	/**
	 * 查询
	 * @return
	 */
	public E peek() {
		if(top <=-1) {
			throw new RuntimeException("Stack is empty!");
		}else {
			return (E)data[top];
		}
	}
}
发布了15 篇原创文章 · 获赞 2 · 访问量 4396

猜你喜欢

转载自blog.csdn.net/u012632105/article/details/103846034