一.队列和栈
1.队列(Queue):是限定只能在表的一端进行插入和在另一端进行删除操作的线性表
2.栈(Stack):是限定只能在表的一端进行插入和删除操作的线性表
3.队列先进先出(FIFO),栈先进后出(FILO)
二.队列实现
package com.hmi.collection;
import java.util.ArrayList;
import java.util.List;
public class Queue {
private List<Object> list = new ArrayList<>();
// 入队
public void add(Object o) {
list.add(o);
}
// 出队
public Object poll() {
if (list.size() > 0) {
return list.remove(0);
}
return -1;
}
// 判断是否为空
public boolean isEmpty() {
return list.isEmpty();
}
public static void main(String[] args) {
Queue q = new Queue();
for (int i = 0; i < 5; i++) {
System.out.println(i + "进队列");
q.add(i);
}
while (!q.isEmpty()) {
System.out.println(q.poll() + "出队列");
}
}
}
测试结果:
三.栈实现
package com.hmi.collection;
import java.util.LinkedList;
public class Stack {
private LinkedList<Object> ll = new LinkedList<Object>();
// 压栈
public void push(Object o) {
ll.add(o);
}
// 出栈
public Object pop() {
if (ll.size() > 0) {
return ll.removeLast();
}
return -1;
}
// 判断是否为空
public boolean isEmpty() {
return ll.isEmpty();
}
public static void main(String[] args) {
Stack s = new Stack();
for (int i = 0; i < 5; i++) {
System.out.println(i + "入栈");
s.push(i);
}
System.out.println("=====");
while (!s.isEmpty()) {
System.out.println(s.pop() + "出栈");
}
}
}
测试结果:
都直接使用了list集合的方法,所以相对简单,大家如果有空可以看看Stack,Queue源码,帮助很大。