1.每日一题
原题链接:戳我戳我
2.测试案例
6
push1
pop
front
push2
push3
pop
1
error
2
3.Queue类实现
用Java自带的队列实现,代码如下,只需要做输入获取的处理与三种操作的判断即可,剩下的事情就是调用对应的类方法
Modifier_and_Type | Method and Description |
boolean |
add(E e) 将指定的元素插入到此队列中,如果可以立即执行此操作,而不会违反容量限制, true 在成功后返回 IllegalStateException 如果当前没有可用空间,则抛出IllegalStateException。 |
E |
element() 检索,但不删除,这个队列的头。 |
boolean |
offer(E e) 如果在不违反容量限制的情况下立即执行,则将指定的元素插入到此队列中。 |
E |
peek() 检索但不删除此队列的头,如果此队列为空,则返回 null 。 |
E |
poll() 检索并删除此队列的头,如果此队列为空,则返回 null 。 |
E |
remove() 检索并删除此队列的头。 |
importjava.util.*;
publicclassMain{
publicstaticvoidmain(Stringargs[]){
Queue<Integer>q=newLinkedList<Integer>();
Scannerin=newScanner(System.in);
intn=in.nextInt();
in.nextLine();
intnum;
String[] strs;
while(n--!=0){
strs=in.nextLine().split(" ");
//入队
if(strs[0].equals("push")){
q.add(Integer.parseInt(strs[1]));
}elseif(strs[0].equals("pop")){
//队不空,队首出列
if(!q.isEmpty()){
System.out.println(q.poll());
}else{
System.out.println("error");
}
}elseif(strs[0].equals("front")){
//队不空,输出队首
if(!q.isEmpty()){
System.out.println(q.peek());
}else{
System.out.println("error");
}
}
}
}
}
4.数组实现队列
importjava.util.*;
publicclassMain {
publicstaticvoidmain(String[] args) {
// TODO Auto-generated method stub
Scannerscan=newScanner(System.in);
intn=Integer.parseInt(scan.nextLine()) ;
MyQueueq=newMyQueue(n+1);
while(scan.hasNextLine()) {
Stringstr=scan.nextLine() ;
Stringarr[] =str.split(" ") ;
if(arr[0].equals("push")) {
q.push(Integer.parseInt(arr[1])) ;
} elseif(arr[0].equals("pop")) {
q.pop() ;
} else {
q.front() ;
}
}
}
}
classMyQueue{
int []arr;//用数组实现队列
intmaxSize;//队列的大小
intfront;//指示队列首下标
intrear;//指示队尾下标
publicMyQueue(intmaxSize){
this.maxSize=maxSize;
arr=newint[maxSize];
front=-1;
rear=-1;
}
//添加数据
publicvoidpush(intval){
//如果队列满了
if(rear==maxSize){
System.out.println("error");
}else{
//添加在队列尾部
rear++;
arr[rear]=val;
}
}
//查看头部数据
publicvoidfront(){
if(isEmpty()){
System.out.println("error");
}else{
System.out.println(arr[front+1]);
}
}
//取出头部数据
publicvoidpop(){
if(isEmpty()){
System.out.println("error");
}else{
front++;
System.out.println(arr[front]);
}
}
//判断队列空
publicbooleanisEmpty(){
if(rear==front){
returntrue;
}
returnfalse;
}
}