怎样创建一个自己的网站,亿网,南通高端网站建设公司,建设网站应注意些什么队列 #xff1a;只允许在一端进行插入数据操作#xff0c;在另一端进行删除数据操作的特殊线性表#xff0c;队列具有先进先出 FIFO(First In First Out) 入队列#xff1a;进行插入操作的一端称为 队尾#xff08; Tail/Rear #xff09; 出队列#xff1a;进行删除操… 队列 只允许在一端进行插入数据操作在另一端进行删除数据操作的特殊线性表队列具有先进先出 FIFO(First In First Out) 入队列进行插入操作的一端称为 队尾 Tail/Rear 出队列进行删除操作的一端称为 队头 Head/Front 在 Java 中 Queue 是个接口底层是通过链表实现 的 方法功能boolean offer(E e)入队列E poll()出队列peek()获取队头元素int size()获取队列中有效元素个数boolean isEmpty()检测队列是否为空 注意 Queue 是个接口在实例化时必须实例化 LinkedList 的对象因为 LinkedList 实现了 Queue 接口。 队列的模拟实现 public class Queue {// 双向链表节点public static class ListNode{ListNode next;ListNode prev;int value;ListNode(int value){this.value value;}}ListNode first; // 队头ListNode last; // 队尾int size 0;// 入队列---向双向链表位置插入新节点public void offer(int e){ListNode newNode new ListNode(e);if(first null){first newNode;// last newNode;}else{last.next newNode;newNode.prev last;// last newNode;}last newNode;size;}// 出队列---将双向链表第一个节点删除掉public int poll(){// 1. 队列为空// 2. 队列中只有一个元素----链表中只有一个节点---直接删除// 3. 队列中有多个元素---链表中有多个节点----将第一个节点删除int value 0;if(first null){return null;}else if(first last){last null;first null;}else{value first.value;first first.next;first.prev.next null;first.prev null;}--size;return value;}// 获取队头元素---获取链表中第一个节点的值域public int peek(){if(first null){return null;}return first.value;}public int size() {return size;}public boolean isEmpty(){return first null;}
} 循环队列 如何区分空与满 通过添加 size 属性记录 保留一个位置 使用标记 双端队列 (Deque) 双端队列 deque 是指允许两端都可以进行入队和出队操作的队列 deque 是 “double ended queue” 的简称。 那就说明元素可以从队头出队和入队也可以从队尾出队和入队。 Deque 是一个接口使用时必须创建 LinkedList 的对象。 在实际工程中使用 Deque 接口是比较多的栈和队列均可以使用该接口。 DequeInteger stack new ArrayDeque();//双端队列的线性实现
DequeInteger queue new LinkedList();//双端队列的链式实现