队列及其特点
队列是人为认为的一种数据结构,并不是计算机内存中真正存储的,所以队列的实现是对顺序结构或者链式存储的一种封装
特点:先进先出,通常有两个方法 入队:enqueue() 出队:dequeue()
基于单向链表实现队列
注:上一节我们自定义了链表,此文队列底层运用上节的LinkedList
package com.tangbaobao.queue;
import com.tangbaobao.LinkedList.MyLinkedList;
/**
* 用单向链表队列
*
* @author 唐学俊
* @create 2018/03/11
**/
public class MyQueue {
private int size;
MyLinkedList linkedList = null;
/**
* 入队
*
* @param value
*/
public void enqueue(int value) {
if (linkedList == null) {
linkedList = new MyLinkedList();
}
linkedList.add(value);
size++;
}
/**
* 出队
*
* @return
*/
public Object dequeue() {
Object value = 0;
if (linkedList != null) {
//每次弹出队列的头
value = linkedList.get(0);
linkedList.removeAt(0);
size--;
} else {
try {
throw new Exception("队列中没有元素");
} catch (Exception e) {
e.printStackTrace();
}
}
return value;
}
/**
* 返回队列大小
*
* @return
*/
public int size() {
return size;
}
}
基于ArrayList实现队列
package com.tangbaobao.queue;
import java.util.ArrayList;
import java.util.List;
/**
* 基于List实现队列
*
* @author 唐学俊
* @create 2018/03/11
**/
public class ListQueue {
private int size;
private List<Object> list = null;
public void enqueue(int value) {
if (list == null) {
list = new ArrayList<>();
}
list.add(value);
size++;
}
public Object dequeue() {
Object value = 0;
if (list != null) {
value = list.get(0);
list.remove(0);
size--;
} else {
try {
throw new Exception("队列中没有元素");
} catch (Exception e) {
e.printStackTrace();
}
}
return value;
}
/**
* 返回队列大小
*
* @return
*/
public int size() {
return size;
}
}
总结
本文实现了比较简单的队列,尤其调用了封装好的数据结构,只需知道新的数据结构怎么工作,实现起来比较简单