赞
踩
队列是数据结构中比较重要的一种类型(是一种数据结构),它支持 FIFO,尾部添加、头部删除(先进队列的元素先出队列),跟我们生活中的排队类似。
队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。
LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。
注:队列是先进先出,栈是先进后出。
1.offer():入队操作,添加元素
2.poll(): 出队操作,返回队列首元素并删除
3.peek():出队操作,获取队列首元素不删除
4.isEmpty():判断队列是否为空
代码如下(示例):
public class Queue_Exercise { public static void main(String args[]) { // 创造一个实例对象 Queue<Integer> queue = new LinkedList<>(); // 入队操作(尾插法) offer() 添加元素 queue.offer(1); queue.offer(2); queue.offer(3); // 出队操作 poll() 返回队首元素并删除 queue.poll(); queue.poll(); // 输出队首元素 peek() 返回队首元素不删除 System.out.println(queue.peek()); //判断队列是否为空 isEmpty() System.out.println(queue.isEmpty()); } }
public class MyQueue { private Node firstNode; // 队头 private Node lastNode; // 队尾 // 入队(尾插法) public void offer(int data) { Node cur = new Node(data); if (this.firstNode == null) { this.firstNode = cur; this.lastNode = cur; } else { this.lastNode.next = cur; this.lastNode = cur; } } // 判断队列是否为空 public Boolean isEmpty() { if (this.firstNode == null) { return true; } return false; } // 出队 获得队首元素并删除 public int poll() { if (isEmpty()) { throw new UnsupportedOperationException("队列为空"); } int ret = this.firstNode.data; this.firstNode = this.firstNode.next; return ret; } // 获得队首元素但不删除 public int peek() { if (isEmpty()) { throw new UnsupportedOperationException("队列为空"); } int ret = this.firstNode.data; return ret; } public static void main(String[] args) { MyQueue myQueue = new MyQueue(); myQueue.offer(1); myQueue.offer(2); myQueue.offer(3); System.out.println(myQueue.peek()); myQueue.poll(); System.out.println(myQueue.peek()); } } class Node { public int data; public Node next; public Node(int data) { this.data = data; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。