zoukankan      html  css  js  c++  java
  • 循环队列

    #include <stdio.h>
    #include <stdlib.h>
    
    //Real capacity is CircularQueueMaxSize -1
    #define CircularQueueMaxSize 1000
    
    typedef int ElementType;
    
    struct CircularQueue
    {
        ElementType QueueData[CircularQueueMaxSize];
        int Front;
        int Rear;
    };
    
    int CircularQueueIsEmpty(struct CircularQueue *Queue)
    {
        return (Queue -> Front == Queue -> Rear);
    }
    
    int CircularQueueIsFull(struct CircularQueue *Queue)
    {
        return ((Queue -> Rear + 1) % CircularQueueMaxSize == Queue -> Front);
    }
    
    struct CircularQueue *CircularQueueInit()
    {
        struct CircularQueue *Queue;
        Queue = malloc(sizeof(struct CircularQueue));
        
        Queue -> Front = Queue -> Rear = 0;
        
        return Queue;
    }
    
    //if Queue is full,return 1 
    int CircularQueueEnqueue(struct CircularQueue *Queue,ElementType ToBeEnqueue)
    {
        if(CircularQueueIsFull(Queue))
        {
            return 1;
        }
        else
        {
            Queue -> Rear = (Queue -> Rear + 1) % CircularQueueMaxSize;
            Queue -> QueueData[Queue -> Rear] = ToBeEnqueue;
        }
        return 0;
    }
    
    //if Queue is empty,return 1 
    ElementType CircularQueueTop(struct CircularQueue *Queue)
    {
        if(CircularQueueIsEmpty(Queue))
        {
            return 1;
        }
        else
        {
            return Queue -> QueueData[(Queue -> Front + 1) % CircularQueueMaxSize];
        }
        return 0;
    }
    
    //if Queue is empty,return 1 
    int CircularQueueDequeue(struct CircularQueue *Queue)
    {
        if(CircularQueueIsEmpty(Queue))
        {
            return 1;
        }
        else
        {
            Queue -> Front = (Queue -> Front + 1) % CircularQueueMaxSize;
            return 0;
        }
    }
    
    int MakeCircularQueueEmpty(struct CircularQueue *Queue)
    {
        Queue -> Front = Queue -> Rear = 0;
        
        return 0;
    }
    
    int CircularQueueDelete(struct CircularQueue *Queue)
    {
        free(Queue);
        Queue = NULL;
        return 0;
    }
    
    int main()
    {
        int test;
        int i;
        
        struct CircularQueue *Queue;
        Queue = CircularQueueInit();
        MakeCircularQueueEmpty(Queue);
        CircularQueueDelete(Queue);
        
        Queue = CircularQueueInit();
        test = CircularQueueTop(Queue);
        CircularQueueDequeue(Queue);
        
        CircularQueueEnqueue(Queue,39);
        test = CircularQueueTop(Queue);
        CircularQueueDequeue(Queue);
        printf("%d
    ",test);
        for(i = 1;i < 2000;i ++)
        {
            CircularQueueEnqueue(Queue,i);
        }
        for(i = 1;i < 500;i ++)
        {
            CircularQueueDequeue(Queue);
        }
        test = CircularQueueTop(Queue);
        CircularQueueDequeue(Queue);
        printf("%d
    ",test);
        return 0;
    }
  • 相关阅读:
    android升级软件版本号,您安装后的新版本号,成功安装画面没有出现,或直接回到桌面
    Linux下安装Tomcat服务器和部署Web应用
    Linux下开启mysql数据库的远程访问权限
    【项目管理和构建】——Maven简介(一)
    用maven搭建多模块项目
    Maven之自定义pom类型的基础项目
    Maven之搭建本地私服(nexus)仓库
    Maven之自定义archetype生成项目骨架(一)
    Maven多模块项目搭建
    安装maven之后,cmd提示mvn不是内部命令的解决办法
  • 原文地址:https://www.cnblogs.com/Asurudo/p/9427305.html
Copyright © 2011-2022 走看看