zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    Argparse4j
    Socket通信中的 BeginReceive与EndReceive
    socket 异步通信的一些问题
    static 还是readonly 还是static readonly
    隐藏Android下的虚拟按键
    IIS上架设https网站证书处理备忘
    [转] 移动平台Html5的viewport使用经验
    Air File.load加载问题
    x64位windows 2003 server中“Server 对象 错误 'ASP 0177 : 800700c1' Server.CreateObject 失败”问题
    报 "错误: 无法取消引用int" 的问题解决纪录
  • 原文地址:https://www.cnblogs.com/kebibuluan/p/6947218.html
Copyright © 2011-2022 走看看