47 _ 循环队列程序演示.swf

本文介绍了循环队列的基本概念,并详细讲解了如何使用数组来实现循环队列,包括初始化、判断队列是否已满、遍历队列、存储数据、判断队列是否为空以及删除队列中的元素等关键操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过上面的分析我们已经对循环队列很了解了,现在我们来学习下循环队列的实现形式

1、代码使用数组现实循环队列

#include<stdio.h>
#include<malloc.h>
#include <stdio.h>  
#include <stdlib.h> 
typedef struct Queue{
    int * data;//存储的数据,指向一个数组 
    int font ;//队列数据删除
    int rear;//队列数据的添加
     
}QUEUE ,*PQUEUE;


/*初始化队列 6表示数组的长度*/
void initQueue( PQUEUE pQueue){
    /*
    队列有三个元素构成:
    1、一个数组
    2、font标志
    3、rear标志 
    */
    //首先让队列 执行一个地址
     pQueue->data = (int*)malloc(sizeof(int)*6);//该数组存储6个int类型的数据
     pQueue->font = 0;
     pQueue->rear = 0; 
    
}

/*
判断队列是否已经存储满了 
*/
bool full_quequ( PQUEUE pQueue){
    if((pQueue->rear+1)%6 == pQueue->font){
        return true;
    }else{
        return false;
    }
}

/*对队列进行遍历*/
void   traverse_queue(PQUEUE pQueue){
    int index = pQueue->font;
    while(index != pQueue->rear){
        printf("%d\n",pQueue->data[index]);
        index = (index+1)%6;
    }
} 

/*向队列中存储数据*/
bool en_queue(PQUEUE pQueue ,int val){
 if(full_quequ(pQueue)){
     return false;
 }else{
     //将输出放入数组对应的当前rear的位置
     pQueue->data[pQueue->rear] = val;
    //rear向上移动
    pQueue->rear = (pQueue->rear+1)%6;//数组的长度是6
     return true; 
      
 }
    
}

/*判断队列是否为空*/
bool isEmptyQueue(PQUEUE pQueue){
    
    if(pQueue->font == pQueue->rear ){
        return true;
    }else{
        return false;
    }
    
}

/*删除队列中的元素,将删除的元素保存到pVal的值中*/
bool delete_quequ(PQUEUE pQueue ,int *pVal){
    if(isEmptyQueue(pQueue)){
        return false;
    }else{
        //删除元素
        *pVal =  pQueue->data[pQueue->font];
        //font指针上移动
        pQueue->font = (pQueue->font +1) % 6;
        return true; 
    }
} 
int main(){
    QUEUE s ;
    initQueue(&s);
    //数组的长度是6,一个空间存储rear,有效的空间只有5个,只能存储5个有效的数据 
    en_queue(&s,1);
    en_queue(&s,2);
    en_queue(&s,3);
    en_queue(&s,1);
    en_queue(&s,2);

    traverse_queue(&s);
    return 0;
}

 

转载于:https://www.cnblogs.com/kebibuluan/p/6947218.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值