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


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

    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
    ",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;
    }
  • 相关阅读:
    Linux文件编辑器 vi
    Sudo 和 Root 帐号
    Linux基本命令篇的习题解答
    Linux应用篇
    VMware中虚拟机网卡的四种模式
    Ubuntu游戏集合
    Linux与Window文件共享
    Linux知识点滴II
    [转载][翻译]jQuery Mobile教程创建一个订餐web应用(下)
    在WPF中创建带有刻度线的滑动条
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/6947218.html
Copyright © 2020-2023  润新知