学习内容:
队列的基本概念(队头、队尾)和特点(先入先出)
双端队列
入队、出队、获取队头元素和判断队列是否为空等基本操作
ArrayDeque的使用
重点归纳:
队列,先入先出,FIFO,first in first out。
双端队列,同时实现两端的添加和删除操作,即同时有队列和栈的特性。
使用方法:导入Queue接口和队列实现类ArrayDeque、LinkedList类。import java.util.Queue; import java.util.ArrayDeque。
常用方法:
isEmpty(): 判断队列是否为空,如果队列为空返回true, 否则返回false。
add(): 入队操作,将新的元素添加到队列的尾部。
poll(): 出队操作,获取并移除队列的头部元素。
peek(): 访问队列的头部元素,但不会将其移除。
size(): 获取队列的长度,即队列中元素的数量。
例题:
解:
点击查看代码
import java.util.Scanner;
import java.util.Queue;
import java.util.ArrayDeque;
public class Main{
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Queue<String> q = new ArrayDeque<>();
for(int i = 0; i < n; i++){
String name = sc.next();
q.add(name);
}
int m = sc.nextInt();
for(int j = 0; j < m; j++){
if(sc.nextInt() == 1){
if(q.isEmpty() == false){
q.poll();
}
}
else{
q.add(sc.next());
}
}
if(q.isEmpty()){
System.out.println("There are no more people in the queue.");
}
else{
System.out.println(q.peek());
}
sc.close();
}
}