Java实现队列的三种方法集合
数组实现队列
//数组实现队列 classqueue{ int[]a=newint[5]; inti=0; //入队操作 publicvoidin(intm){ a[i++]=m; } //出队列操作取出最前面的值通过循环遍历把所有的数据向前一位 publicintout(){ intindex=0; inttemp=a[0]; for(intj=0;jArrayList实现队列
//集合实现队列 classqueue{ Listlist=newArrayList (); intindex=0; publicvoidin(intn){ list.add(n); index++; } //出队列操作 //出队 publicintout(){ if(!list.isEmpty()){ index--; returnlist.remove(0); } return-1; } } 两个堆栈实现队列
//两个堆栈实现一个队列 classqueue3{ StackstackA=newStack (); Stack stackB=newStack (); //入队 publicvoidin(intn){ stackA.push(n); } //出队我们把A里面的元素遍历拿出放入B中再拿出B中的第一个元素 publicintout(){ //判断b栈有没有元素有返回false无返回真 if(stackB.isEmpty()){ while(!stackA.isEmpty()){ stackB.push(stackA.pop()); } } returnstackB.pop(); } } 补充知识:java使用链表实现队列
队列使用Java进行链表实现,在网上找到了一张图,很好,借鉴一下
设置两个结点node,front指向队首元素,rear指向队尾;
上代码:
publicclassLinkedQueue{ Nodefront;//队头指针,指向队头节点 Noderail;//队尾指针,指向队尾节点 intsize=0;//记录队列长度 //构造函数 publicLinkedQueue(){ front=rail=null; } publicbooleanisEmpty(){ returnsize==0?true:false; } //添加元素 publicbooleanaddQueue(Objectele){ if(size==0){ front=newNode(null,ele); rail=front; size++; returntrue; } Nodes=newNode(null,ele); //这块有个主意的地方,一旦rail设置了next属性,因为front节点与rail节点指向了同一个node节点,持有同一个结点的一个引用,因此front节点next属性也被填充 rail.setNext(s); rail=s; size++; returntrue; } /** *删除元素,出队列 *@return */ publicbooleandeleteQueue(){ if(isEmpty()){ System.out.println("当前队列为空"); returnfalse; } front=front.next; size--; returntrue; } publicstaticvoidmain(String[]args){ LinkedQueuequeue=newLinkedQueue(); queue.addQueue(1); queue.addQueue(2); queue.addQueue(3); queue.deleteQueue(); } } /** *首先链表底层是一个个结点 */ classNode{ Nodenext; Objectelement; publicNode(Nodenext,Objectelement){ this.next=next; this.element=element; } publicNodegetNext(){ returnnext; } publicvoidsetNext(Nodenext){ this.next=next; } publicObjectgetElement(){ returnelement; } publicvoidsetElement(Objectelement){ this.element=element; } }以上这篇Java实现队列的三种方法集合就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。