java链表和队列的区别,编写实现队列的例程,使用数组和链表
队列的介绍
队列是一种先进先出(先进先出)的线性的数据结构,队列的主要操作为入队和出队。
队头:队列的出口端,队尾:队列的入口端,通常在数组中表示为最后入队元素的下一个位置。
在用数组实现时,注意:若队头不断有元素出队,那么队列的可用空间就会变小,所以我们通常用循环队列来实现,此时队尾也可能出现在队头的前面。
相关学习视频教程推荐:java学习
队列的数组实现
队列的数组实现这里的队列一般都是循环队列!
特别注意:
(1)队列满时的判断条件为(队尾下标+1) % 数组长度 = 队头下标
(2)队尾指针指向的位置空出一位,因此队列最大容量比数组长度小1。
公共类我的队列{
私有int[]数组;
私有int front
私人内部后部
公共MyQueue(int容量){
array=new int[capacity];
}
/*
入队时,只需判断队列是否已满,若队列已满,则抛出异常,其他情况(包括队列为空)都正常插入
*/
公共空的入队(整数数据)引发异常{
if((rear 1) % array.length==front)
抛出新异常(队列已满,不能入队!);
array[rear]=data;
后方=(后方1)%数组。长度;
}
/*
出队时,判断队列是否为空,若队列为空,抛出异常
*/
public int出列()引发异常{
如果(前==后)
抛出新异常(队列为空,不能出队!);
int temp=array[front];
front=(front 1)% array。长度;
返回温度;
}
//public void output(){
//for(int I=front;((I ^ 1)%数组。长度)=后方;i ){
//一直在循环输出,严重错误!不能把取模判断语句写在条件里面!
//I %=数组。长度;
//系统。出去。println(array[I]);
//}
//}
公共空的输出(){
for(int I=front;我!=后方;I=(I ^ 1)%数组。长度){
系统。出去。println(array[I]);
}
}
公共静态void main(String[] args)引发异常{
我的队列我的队列=新的我的队列(5);//长度为5的队列只能插入四个元素
我的队列。入队(1);
我的队列。入队(3);
我的队列。入队(2);
我的队列。入队(4);
我的队列。dequeue();
我的队列。dequeue();
我的队列。入队(5);
我的队列。入队(6);
我的队列。output();
}
}队列的链表实现
队列用链表实现时,用头指针指向队列的第一个节点,用尾指针指向队列的最后一个节点。
公共类MyQueue_LinkList {
私有静态类节点{
(同Internationalorganizations)国际组织数据;
下一个节点;
节点(整数数据){
this.data=数据
}
}
私有节点前端;
私有节点后方;
私有(同Internationalorganizations)国际组织大小;//队列中实际元素的个数
private int maxsize
public my queue _ LinkList(int capacity){
maxsize=容量;
}
公共空的入队(整数数据)引发异常{
if(size=maxsize)
抛出新异常(队列已满,无法入队);
插入的节点节点=新节点(数据);
if(size==0){
front=插入的节点
rear=插入的节点
}
否则{
rear.next=插入的节点
rear=插入的节点
}
尺寸;
}
public int出列()引发异常{
if(front==null)
抛出新异常(队列为空,无法出队!);
内部温度;
如果(前==后)//队列中只有一个节点
后方=空;
temp=front.data
front=front .下一个
尺寸-;
返回温度;
}
公共空的输出(){
节点温度=前端;
for(int I=0;我尺寸;i ){
系统。出去。打印(温度数据);
temp=temp.next
}
}
公共静态void main(String[] args)引发异常{
my queue _ LinkList my queue _ LinkList=new my queue _ LinkList(5);
我的队列_链表。入队(1);
我的队列_链表。入队(3);
我的队列_链表。入队(2);
我的队列_链表。dequeue();
my queue _ linklist . dequeue();
my queue _ linklist . enqueue(5);
my queue _ linklist . enqueue(7);
my queue _ linklist . output();
}
}队列的应用场景
(1)银行排队,先到先得。
(2)多线程中,公平锁的等待队列是根据访问顺序来确定队列中线程的顺序。
(3)网络爬虫实现网站爬取,即将待爬取网站的URL存储在队列中,然后按照在队列中存储的顺序依次爬取并分析。
相关文章及教程推荐:java入门教程以上是队列数组和链表在java中的实现细节。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。