“队列”这个单词是英国人说的“排”。在英国“排队”的意思就是站到一排当中去。计算机科学中,队列是一种数据结构,有点类似栈,只是在队列中第一个插入的数据项也会最先被移除,而在栈中,最后插入的数据项最先移除。队列的作用就像电影院前的人们站成的排一样:第一个进入附属的人将最先到达队头买票。最后排队的人最后才能买到票。

java1

在计算机中,队列和栈一样也被用作程序员的工具。它也可以用于模拟真实世界的环境,例如模拟人们在银行里排队等待,飞机等待起飞,或者因特网络上数据包等待传送。

java实现队列的方法

1.基于数组
packageAlgorithm.learn;
importjava.util.Arrays;
/**
*Createdbyliujinhongon2017/3/7.
*/
publicclassArrayQueue<E>{
Object[]queue;
intsize;
publicArrayQueue(){
queue=newObject[10];
}
publicbooleanisEmpty(){
returnsize==0;
}
publicEpoll(){
if(isEmpty())returnnull;
Edata=(E)queue[0];
System.arraycopy(queue,1,queue,0,size-1);
size--;
returndata;
}
privatevoidensureCapacity(intsize){
if(size>queue.length){
intlen=queue.length+10;
queue=Arrays.copyOf(queue,len);
}
}
publicvoidoffer(Edata){
ensureCapacity(size+1);
queue[size++]=data;
}
publicstaticvoidmain(String[]args){
ArrayQueue<Integer>queue=newArrayQueue<>();
for(inti=0;i<20;i++){
queue.offer(i);
}
for(inti=0;i<20;i++){
System.out.println(queue.poll());
}
}
}

java实现队列

2.基于链表
packageAlgorithm.learn;
/**
*Createdbyliujinhongon2017/3/7.
*基于链表实现队列
*/
publicclassListQueue<E>{
classNode<E>{
Node<E>next=null;
Edata;
publicNode(Edata){
this.data=data;
}
}
privateNode<E>head=null;
privateNode<E>tail=null;
publicbooleanisEmpty(){
returnhead==null;
}
publicvoidoffer(Ee){
Node<E>node=newNode<E>(e);
if(isEmpty()){
head=node;
tail=node;
return;
}
tail.next=node;
tail=node;
}
publicEpoll(){
if(isEmpty())returnnull;
Edata=head.data;
head=head.next;
returndata;
}
publicintsize(){
Node<E>temp=head;
intlen=0;
while(temp!=null){
len++;
temp=temp.next;
}
returnlen;
}
publicstaticvoidmain(String[]args){
ListQueue<String>queue=newListQueue<>();
queue.offer("a");
queue.offer("b");
System.out.println(queue.poll());
System.out.println(queue.poll());
}
}

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。