Java实现队列的三种方法集合
数组实现队列
//数组实现队列
classqueue{
int[]a=newint[5];
inti=0;
//入队操作
publicvoidin(intm){
a[i++]=m;
}
//出队列操作取出最前面的值通过循环遍历把所有的数据向前一位
publicintout(){
intindex=0;
inttemp=a[0];
for(intj=0;j
ArrayList实现队列
//集合实现队列
classqueue{
Listlist=newArrayList();
intindex=0;
publicvoidin(intn){
list.add(n);
index++;
}
//出队列操作
//出队
publicintout(){
if(!list.isEmpty()){
index--;
returnlist.remove(0);
}
return-1;
}
}
两个堆栈实现队列
//两个堆栈实现一个队列
classqueue3{
StackstackA=newStack();
StackstackB=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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。