题解 | #【模板】队列#
【模板】队列
http://www.nowcoder.com/practice/afe812c80ad946f4b292a26dd13ba549
思路:
在本题中,我们使用 ArrayList 结构存放数据,而不直接使用 int[] 结构存放数据,主要是因为后者 初始化 要开辟很大的 内存空间,不然后续如果加入 太多 的数据,存不下 了怎么办。与此同时,我们还要维护一个 指针,它永远指向当前的 队头。
- push 操作,没啥好说的,直接调用 add 方法即可。
- pop 操作,需要返回 当前指针 指向位置的元素。同时,指针 向后移动一位。
- front 操作和 pop 操作类似,区别在于,不需要 移动指针的位置。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = Integer.valueOf(scan.nextLine().trim());
ArrayList<String> ans = new ArrayList<>();
for (int i = 0; i < n; i++) {
String[] operator = scan.nextLine().split(" ");
if ("push".equals(operator[0])) {
push(operator[1]);
} else if ("pop".equals(operator[0])) {
ans.add(pop());
} else {
ans.add(front());
}
}
for (String str : ans) {
System.out.println(str);
}
}
public static ArrayList<String> arr = new ArrayList<>();
public static int index = 0;
public static void push(String num) {
arr.add(num);
}
public static String pop() {
return index == arr.size() ? "error" : arr.get(index++);
}
public static String front() {
return index == arr.size() ? "error" : arr.get(index);
}
}