import java.util.*; public class Duilie { public static void main(String args[]){ Scanner in=new Scanner(System.in); while(in.hasNext()){ //测试Que1 Que1 que1=new Que1(); int n1=in.nextInt(); for(int i=0;i<n1;i++){ que1.push(in.nextInt()); } System.out.println(que1.peek()); System.out.println(que1.pop()); System.out.println(que1.peek()); que1.delete(); System.out.println(que1.peek()); System.out.println(que1.getsize()); //测试Que2 Que2 que2=new Que2(100); int n2=in.nextInt(); for(int i=0;i<n2;i++){ que2.push(in.nextInt()); } System.out.println(que2.peek()); System.out.println(que2.pop()); System.out.println(que2.peek()); que2.delete(); System.out.println(que2.peek()); System.out.println(que2.getsize()); //测试Que3 Que3 que3=new Que3(); int n3=in.nextInt(); for(int i=0;i<n3;i++){ que3.push(in.nextInt()); } System.out.println(que3.peek()); System.out.println(que3.pop()); System.out.println(que3.peek()); que3.delete(); System.out.println(que3.peek()); System.out.println(que3.getsize()); } } } class Que1{ public static int top; public static List nums=new ArrayList<>(); Que1(){ } //入队列 public static void push(int value){ nums.add(value); } //获取队列首元素,并保持该元素 public static int peek(){ return (int)nums.get(0); } //获取队列首元素,并删除该元素 public static int pop(){ int res=(int)nums.get(0); nums.remove(0); return res; } //删除队列首位元素 public static void delete(){ nums.remove(0); } //获得队列的大小 public static int getsize(){ return nums.size(); } } //基于数组实现 class Que2{ public static int nums[]=null; public static int top=0; //初始化 Que2(int initsize){ nums=new int[initsize]; } //入队列 public static void push(int value){ if(top==nums.length){ int maxsize=nums.length+1000; int temp[]=new int[nums.length]; for(int i=0;i<nums.length;i++){ temp[i]=nums[i]; } int nums[]=new int[maxsize]; for(int i=0;i<temp.length;i++){ nums[i]=temp[i]; } nums[temp.length]=value; top=temp.length+1; }else{ nums[top]=value; top++; } } //获取元素peek public static int peek(){ return nums[0]; } //获取元素并删除 public static int pop(){ int res=nums[0]; for(int i=0;i<top-1;i++){ nums[i]=nums[i+1]; } nums[top-1]=0; top--; return res; } //获得大小 public static int getsize(){ return top; } //删除元素 public static void delete(){ for(int i=0;i<top-1;i++){ nums[i]=nums[i+1]; } nums[top-1]=0; top--; } } class Que3{ public static ListNode head=new ListNode(0); public static ListNode tail=head; public static int size=0; Que3(){ } //进入队列 public static void push(int value){ ListNode temp=new ListNode(value); temp.next=null; tail.next=temp; tail=temp; size++; } //队列首位元素 public static int peek(){ return head.next.value; } //返回队列大小 public static int getsize(){ return size; } //pop public static int pop(){ int res=head.next.value; head.next=head.next.next; size--; return res; } //delete public static int delete(){ int res=head.next.value; head.next=head.next.next; size--; return res; } } class ListNode{ int value; ListNode next; ListNode(int value){ this.value=value; } }
实现队列-数组、链表、list
最新推荐文章于 2021-03-21 17:58:31 发布