zoukankan      html  css  js  c++  java
  • C_数据结构_循环队列

    # include <stdio.h>
    # include <malloc.h>
    
    typedef struct Queue
    {
        int * pBase;
        int front;
        int rear;
    }QUEUE;
    
    void init(QUEUE *); //初始化
    bool en_queue(QUEUE *, int val); //入队
    void traverse_queue(QUEUE *); //遍历输出
    bool full_queue(QUEUE *); //判断是否已满
    bool out_queue(QUEUE *, int * pVal); //出队
    bool emput_queue(QUEUE * pQ); //判断是否为空
    
    int main(void)
    {
        QUEUE Q;
        int val;
    
        init(&Q);
        en_queue(&Q, 1);
        en_queue(&Q, 2);
        en_queue(&Q, 3);
        en_queue(&Q, 4);
        en_queue(&Q, 5);
        en_queue(&Q, 6);
        en_queue(&Q, 7);
        en_queue(&Q, 8);
    
        traverse_queue(&Q);
    
        if ( out_queue(&Q, &val) )
        {
            printf("出队成功,出队元素是:%d
    ", val);
        }
        else
        {
            printf("出队失败!
    ");
        }
        traverse_queue(&Q);
    
        return 0;
    }
    
    void init(QUEUE *pQ) //初始化
    {
        pQ->pBase = (int *)malloc(sizeof(int) * 6);
        pQ->front = 0; 
        pQ->rear = 0;
    }
    
    bool full_queue(QUEUE * pQ) //判断是否已满
    {
        if ( (pQ->rear+1) % 6 == pQ->front )
            return true;
        else
            return false;
    }
    
    bool en_queue(QUEUE * pQ, int val) //入队
    {
        if ( full_queue(pQ) )
        {
            return false;
        }
        else
        {
            pQ->pBase[pQ->rear] = val;
            pQ->rear = (pQ->rear+1) % 6;
    
            return true;
        }
    }
     
    void traverse_queue(QUEUE * pQ) //遍历输出
    {
        int i = pQ->front;
    
        while (i != pQ->rear)
        {
            printf("%d ", pQ->pBase[i]);
            i = (i+1) % 6;
        }
        printf("
    ");
    
        return;
    }
    
    bool emput_queue(QUEUE * pQ) //判断是否为空
    {
        if ( pQ->front == pQ->rear )
            return true;
        else
            return false;
    }
    
    bool out_queue(QUEUE * pQ, int * pVal) //出队
    {
        if ( emput_queue(pQ) )
        {
            return false;
        }
        else
        {
            *pVal = pQ->pBase[pQ->rear];
            pQ->front = (pQ->front+1) % 6;
    
            return true;
        }
    }
  • 相关阅读:
    PHP 日期的时区差异
    c++与c输出输入语句时空区别
    数据库中完整性约束的SQL定义几点小解
    字符的一字节8位问题
    C#抽象类
    SQL server 中SUBSTRING()以及CONVERT()的用法
    关于CS模式下,控制一个容器内控件的值问题
    新的公司新的感受
    小生谈字符串的截取函数SubString()仅限csharp语言
    LINQ中怎么使用NEWID()之自我学习与理解
  • 原文地址:https://www.cnblogs.com/LXL616/p/10661617.html
Copyright © 2011-2022 走看看