我们都知道栈(Stack)是限制仅在表的一段进行插入和删除运算的线性表
1、通常称插入、删除的这一端为栈顶(Top),另一端为栈底(Bottom)
2、当表中没有元素时被称为空栈
3、栈为先进后出(Last In First Out)的线性表,简称LIFO
栈的修改总是按照先进后出的原则进行
实现代码如下:
/**
* @date 2018/10/26
* 栈的实现
*/
public class MyStack {
//底层实现
private long[] arr;
private int top;
public MyStack() {
arr = new long[10];
top = -1;
}
public MyStack(int maxSize){
arr = new long[maxSize];
top = -1;
}
/**
* 添加数据
* @param value
*/
public void push(int value){
arr[++top] = value;
}
/**
* 移除数据
* @return
*/
public long pop(){
return arr[top--];
}
/**
* 查看数据
* @return
*/
public long peek(){
return arr[top];
}
/**
* 判断是否为空
* @return
*/
public boolean isEmpty(){
return top == -1;
}
/**
* 判断是否满了
* @return
*/
public boolean isFull(){
return top == arr.length - 1;
}
}
测试类:
/**
* @date 2018/10/26
* 测试类
*/
public class TestMyStack {
public static void main(String[] args) {
MyStack ms = new MyStack(4);
ms.push(1);
ms.push(2);
ms.push(3);
ms.push(4);
System.out.println(ms.isEmpty());
System.out.println(ms.isFull());
while (!ms.isEmpty()){
System.out.println(ms.pop());
}
System.out.println(ms.isEmpty());
}
}