基于实现二次封装数组https://blog.csdn.net/qq_39313596/article/details/101630245来实现
github 地址:https://github.com/heng1234/data-structure
Stack接口
package com.company.Satck;
/**
* Stack
* 栈的接口
* @author heng
**/
public interface Stack<E> {
/**
* 拿到栈的大小
* @return
*/
int getSize();
/**
* 是否存在数据
* @return
*/
boolean isEmpty();
/**
* 添加数据到栈
* @param e
*/
void push (E e);
/**
* 拿到栈顶数据
* @return
*/
E pop();
/**
* 查看栈顶数据
* @return
*/
E peek();
}
栈的实现类
package com.company.Satck;
import com.company.Array.Array;
/**
* ArrayStack
* 栈的实现
* @author heng
* @date 2019/9/30
**/
public class ArrayStack<E> implements Stack<E> {
/**
* 初始化容器
*/
Array<E> array;
/**
* 初始化大小
* @param capacity
*/
public ArrayStack(int capacity){
array = new Array<>(capacity);
}
/**
* 没有传入则默认大小
*/
public ArrayStack(){
array = new Array<>();
}
/**
* 拿到栈的大小
* @return
*/
@Override
public int getSize() {
return array.getSize();
}
/**
* 是否存在数据
* @return
*/
@Override
public boolean isEmpty() {
return array.isEmpty();
}
/**
* 添加数据到栈
* @param e
*/
@Override
public void push(E e) {
array.addLast(e);
}
/**
* 拿到栈顶数据
* @return
*/
@Override
public E pop() {
return array.removeLast();
}
/**
* 查看栈顶数据
* @return
*/
@Override
public E peek() {
return array.getLast();
}
/**
* 查看用户有多少容积
* @return
*/
public int getCapacity(){
return array.getCapacaity();
}
@Override
public String toString(){
StringBuilder builder = new StringBuilder();
builder.append("[");
for (int i = 0; i < array.getSize(); i++) {
builder.append(array.get(i));
if (i != array.getSize()-1){
builder.append(" , ");
}
}
builder.append("] top");
return builder.toString();
}
}
测试:
package com.company.Satck;
/**
* Main
* 栈的测试
* @author heng
* @date 2019/9/30
**/
public class Main {
public static void main(String[] args) {
ArrayStack<Integer> stack = new ArrayStack<>();
for (int i = 0; i < 6; i++) {
stack.push(i);
System.out.println(stack);
}
System.out.println(stack.pop());
System.out.println(stack);
}
}