使用LinkedList实现堆栈和队列
一.使用LinkedList实现堆栈(先进后出)
首先我们通过一个例子来了解linkedlist实现堆栈的原理,即先进后出:
假设有一个子弹匣,当我们往里面添加子弹的时候,往往第一颗子弹会被压到子弹匣的最底部,而最后一粒添加的子弹是在子弹匣的最顶部,即先进的子弹在最底部,后进的子弹在最顶部.
当我们开枪的时候,往往是从最顶部发出,但我们会发现最顶部的那颗子弹是最后添加的,而最底部的子弹是最后发出的,即先进后出.
注意:
1.堆是堆,栈是栈;堆栈是堆栈!
2.堆栈是一种数据结构!
图解:
package com.zking.test01;
import java.util.LinkedList;
public class MyStack {
//定义一个linkedlist集合
private LinkedList<Object> lst=new LinkedList<>();
//压栈(添加子弹)
public void push(Object obj) {
lst.addFirst(obj);
}
//出栈(开枪)
public Object pop() {
Object first = lst.getFirst();
lst.removeFirst();
return first;
}
//判断大小
public int size() {
return lst.size();
}
//测试
public static void main(String[] args) {
//实例化
MyStack ms=new MyStack();
//压栈
ms.push("a");
ms.push("b");
ms.push("c");
ms.push("d");
//判断是否还有元素
while(ms.size()!=0) {
//出栈
System.out.println(ms.pop());
}
}
}
二.使用LinkedList实现队列(先进先出,后进后出)
简单的来说像是在吹泡泡…
图解:
package com.zking.test01;
import java.util.LinkedList;
public class MyQueue {
//定义一个linkedlist集合
private LinkedList<Object> lst=new LinkedList<>();
//入队
public void add(Object obj) {
lst.addFirst(obj);
}
//出队
public Object get() {
return lst.removeLast();
}
//判断大小
public int size() {
return lst.size();
}
//测试
public static void main(String[] args) {
//实例化
MyQueue mq=new MyQueue();
//入队
mq.add("a");
mq.add("b");
mq.add("c");
mq.add("d");
mq.add("e");
//判断是否还有元素
while(mq.size()!=0) {
System.out.println(mq.get());//出队
}
}
}
以上是对堆栈和队列的讲解,谢谢你耐心的看完,希望可以帮到你!