![](https://csdnimg.cn/release/download_crawler_static/86027651/bg6.jpg)
循环队的入队算法如下:
1、tail=tail+1;
2、若tail=n+1,则tail=1;
3、若head=tail尾指针与头指针重合了,表示元素已装满队列, 则作上溢
出错处理;
4、否则,Q[tail]=x,结束(x为新入出元素)。
队列和栈一样,有着非常广泛的应用。
考虑一个分时系统,如果一台计算机联有四个终端,即允许四个用户同时
使用这一台计算机。那么,计算机系统必须设立一个队列, 用以管理各终端用
户使用CPU的请求。当某个用户要求使用CPU时,相应的终端代号就入队(插
入队尾),而队头的终端用户则是CPU当前服务的对象。我们考虑最简单的情
况, 对于当前用户(队头),系统每次分配一个为时间片的时间间隔,在一个
时间片内,如果当前用户的作业没有结束,则该终端用户的代号出队后重新入
队,插入队尾,等待下一次CPU服务。如果某个用户的作业运行结束,则先退
出,出队后不再入队,整个运行过程就是各终端代号不断地入队、出队,CPU
轮流地为n(n≤4)个终端用户服务。由于计算机的运行速度极快,所以,
对于每个终端用户来说,似乎计算机是单独在为其服务。
和线性表一样,栈和队可以采用链表存储结构,当要实现多个栈共享内存
或多个队共享内存时,选择链式分配结构则更为合适。