首页 > 编程知识 正文

fifo算法 先进先出算法(fifo基本原理)

时间:2023-05-04 18:12:25 阅读:73809 作者:4983

java算法: FIFO队列

FIFO队列是ADT,由两个基本操作组成。 也就是说,插入(放入)新项目,删除(得到)第一个插入的项目。

示例1:FIFO队列ADT接口

Java代码

接口intqueue {

输入队列(输入队列);

intempty (

语音推送(intq );

intget (;

}

接口int queue {

输入队列(输入队列);

int empty (;

语音推送(intq );

int get (;

}

使用数组或链表,在一定时间内实现FIFO队列ADT的get和put操作。

示例2 :实现2:FIFO队列链表

Java代码

publicclassintQueue{

私有群集节点{

国际项目

节点下一步;

节点(intitem ) {

this.item=item;

下一个=null;

}

}

隐私保护,tail;

输入队列(intmax ) {

head=空;

tail=null;

}

布尔empty () }

返回(head==null );

}

voidput(Intitem ) {

节点=tail;

tail=newnode(item );

if(empty () ) )。

head=tail;

}else{

t.next=tail;

}

}

intget ()。

intv=head.item;

Nodet=head.next;

head=t;

返回网络;

}

}

公共类int queue {

私有类节点{

int item;

节点下一步;

节点(intitem ) {

this.item=item;

下一个=null;

}

}

专用节点头,tail;

输入队列(intmax ) {

head=空;

tail=null;

}

布尔empty () }

返回(head==null );

}

voidput(intitem ) {

节点t=tail;

tail=newnode(item );

if(empty () ) )。

head=tail;

}else{

t.next=tail;

}

}

int get ()。

int v=head.item;

Node t=head.next;

head=t;

返回v;

}

}

数组必须有足够的空间用于自始至终预期的最大条目数。 链接表表示使用的空间与数据结构中的元素数成比例,但为指针分配额外的空间,并为每个操作分配和释放内存需要额外的时间。

示例3:FIFO队列的数组实现

Java代码

publicclassintQueue{

privateint[]q;

私有Intn,头部,尾部;

输入队列(intmax ) {

q=newint[maxN 1];

head=N;

tail=0

}

布尔empty () }

返回(head % n==tail );

}

voidput(Intitem ) {

q[tail ]=item;

tail=tail%N;

}

intget ()。

head=head%N;

returnq[head ];

}

}

公共类int queue {

private int[] q;

私密int n,head,tail;

输入队列(intmax ) {

q=new int[maxN 1];

head=N;

tail=0

}

布尔empty () }

返回(head % n==tail );

}

voidput(intitem ) {

q[tail ]=item;

tail=tail%N;

}

int get ()。

head=head%N;

返回q [ head ];

}

}

扩展:删除双侧队列、随机条目队列(如果第一个条目是FIFO队列,最后一个条目是堆栈)、关键字条目、自定义条目等。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。