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];
}
}
}
栈-自定义实现
猜你喜欢
转载自blog.csdn.net/u012632105/article/details/103846034
今日推荐
周排行