“队列”这个单词是英国人说的“排”。在英国“排队”的意思就是站到一排当中去。计算机科学中,队列是一种数据结构,有点类似栈,只是在队列中第一个插入的数据项也会最先被移除,淘宝补单平台,而在栈中,网站文章代更新,最后插入的数据项最先移除。队列的作用就像电影院前的人们站成的排一样:第一个进入附属的人将最先到达队头买票。最后排队的人最后才能买到票。
在计算机中,队列和栈一样也被用作程序员的工具。它也可以用于模拟真实世界的环境,拼多多货源平台,例如模拟人们在银行里排队等待,抖音快速上热门,飞机等待起飞,微博刷粉网站,或者因特网络上数据包等待传送。
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());
}
}
}
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());
}
}