Code前端首页关于Code前端联系我们

循环队列的基本功能(初始化、入队和队列出队、遍历)及C语言代码实现

terry 2年前 (2023-09-27) 阅读数 68 #数据结构与算法

1。初始化

初始化比链表简单。核心是取空间,移动前指针,将后指针的内容设置为0,表示指向第0个元素(注意第0个元素的内容为空)。

循环队列的基本操作(初始化、入队出队、遍历)及C语言代码实现

代码可表达为:

//初始化cir_queue *init(){ cir_queue *q =cir_queue *q =cir_queue (

循环队列的基本操作(初始化、入队出队、遍历)及C语言代码实现

大小

(cir_queue)); if(q==NULL){ //F } † q;}

2。队列功能

队列功能与顺序队列方法相同。可以把车尾直接往后移,但是要注意判断。如果尾部到达队列状态,则重新开始。继续移动。这里推荐使用rest方法。因此,无论如何,余都都必须在这个领域采取行动。这可以防止整个系统在一次错误执行后立即崩溃。它也相对更紧凑。不建议使用if语句,看起来相当麻烦。

循环队列的基本操作(初始化、入队出队、遍历)及C语言代码实现

注意,单次插入移动位置时,不能直接进行q->rear++等操作。当计算机确定优先级时,这会导致意想不到的后果。另外,这里还需要判断一下队列是否已满。当back指针的下一个位置是front时,循环队列已满。

如图:

循环队列的基本操作(初始化、入队出队、遍历)及C语言代码实现

代码可表示为:

//入队操作pushvoid h, int 数据”溢出,无法加入队伍\n");    返回;❃  se { q->返回 =(q->返回+1)%maxsize ;       q->数据[q->后面]=数据; 如果您想打断连续的队列,请将前面的部分向后移一位。注意,这个阶段值得关注的是,即队列是否为空。当队列为空时,无法出队。

循环队列的基本操作(初始化、入队出队、遍历)及C语言代码实现

代码可表达如下:

//删除函数popvoid pop(cir_queue *q) (q->back ==q->front) { printf("队列为空,无法出队\n"❙‶)❙‶); 返回 > q->front=( q->front+ 1)%maxsize;}}

4.传输操作

传输操作需要使用临时变量来存储前面部分的位置信息,i用于逐渐向后移动,直到i到达。知道了前面部分的位置就可以指示传输结束后部。? i=q->前;

同时(i!=q->后){      ; ❃   (i)   printf ("%d\t",q->数据[i]);
); //记得换行}

5.本题代码

#include#include#include#define the maxsize 10. // a 的结构设计循环队列 int 数据[最大大小] ; int  返回; front;}cir_queue;//初始化cir_queue *init( ){* * (尺寸(cir_queue)); if(q== NULL){

循环队列的基本操作(初始化、入队出队、遍历)及C语言代码实现

(q== NULL); › (q-> 数据));

q->front=0; 返回 ❀//进入队列函数pushvoid push(cir_queue *q,❙ ){ 如果(( q ->返回+1 )%maxsize==q->etu){     printf(()♻♻"""乔”);    返回;}否则{{{尺寸; q->数据[q->后]=数据;}}}

循环队列的基本操作(初始化、入队出队、遍历)及C语言代码实现

}♷

pop( cir_队列 *q){ if(q->back==q->front) 为空,无法卸载\n"); q- > data [q->front] = 0; q->front = (q->front+1) %maxsize; }}// Kii 通过队列 空♷❀ q){ int i=q->front; 同时(i=q->返回) { +1。    printf("%d\t" ,q->数据[i]);} printf("\n"); //记得换行}int main(){ cir_queue *q = init(); //////////////进入队列函数////////// /// ////printf("输入函数\n");); ( int) i=1;i

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门