介绍:
基本思路和我之前通过链表实现queue【点击这里查看】的思路基本一致,这个Stack结构是依赖与我之前写的LinkList【点击这里查看】。
对外实现的接口:
源代码:
package algorithmBeauty.dataStructure.stack;
import algorithmBeauty.dataStructure.link.iLinkList.MyLinkList;
/**
* @author : HuXuehao
* @date : 2021年4月20日下午8:38:32
* @version :
*/
public class MyStack<E> {
/**
* @Description 这里使用组合的方式,将之前写的MyLinkList作为此类的成员使用
*/
private MyLinkList<E> list = new MyLinkList<>();
/**
* @Description 栈的规模
*/
public int size() {
return list.size();
}
/**
* @Description 判断栈是否为空
*/
public boolean isEmpty() {
return list.isEmpty();
}
/**
* @Description 入栈
*/
public void push(E element) {
list.add(element);
}
/**
* @Description 出栈
*/
public E pop() {
if(list.size()>0) return list.remove(list.size()-1);
return null;
}
/**
* @Description 看一看栈顶元素
*/
public E peek() {
if(list.size()>0) return list.getElement(list.size()-1);
return null;
}
}
测试代码:
public static void main(String[] args) {
MyStack<Integer> stack = new MyStack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
System.out.println(stack.peek());
System.out.println("----");
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println("----");
System.out.println(stack.pop());
System.out.println(stack.peek());
}
测试结果: