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

    queue.h

    #ifndef QUEUE_
    #define QUEUE_
    
    #define SIZE 10
    
    typedef int data_t;
    
    typedef struct head{
            data_t data[SIZE];
            int front;
            int rear;
    }queue_t;
    
    queue_t *queue_creat();
    
    int queue_is_empty(queue_t *head);
    
    int queue_is_full(queue_t *head);
    
    void queue_clear(queue_t *head);
    
    int queue_en(queue_t *head,data_t data);
    
    data_t queue_de(queue_t *head);
    
    void queue_show(queue_t *head);
    
    void queue_detory(queue_t **head);
    
    #endif

    queue.c

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <strings.h>
    
    #include "queue.h"
    
    
    queue_t *queue_creat()
    {
            queue_t *head = (queue_t *)malloc(sizeof(queue_t));
            bzero(head,sizeof(queue_t));
    
            head->front = 0;
            head->rear = 0;
    
            return head;
    }
    
    int queue_is_empty(queue_t *head)
    {
            return head->front == head->rear;
    }
    
    int queue_is_full(queue_t *head)
    {
            return head->rear - head->front == SIZE;
    }
    
    void queue_clear(queue_t *head)
    {
            head->rear = head->front;
    }
    
    int queue_en(queue_t *head,data_t data)
    {
            if(queue_is_full(head))
            {
                    printf("queue is fulll
    ");
                    return -1;
            }
    
            head->data[head->rear%SIZE] = data;
            head->rear++;
    
            return 0;
    }
    
    data_t queue_de(queue_t *head)
    {
            if(queue_is_empty(head))
            {
                    printf("queue is empty
    ");
                    return -1;
            }
    
            data_t data = head->data[head->front%SIZE];
            head->front++;
    
            return data;
    }
    
    void queue_show(queue_t *head)
    {
            int i;
            for(i=head->front;i<head->rear;i++)
            {
                    printf("%d	",head->data[i%SIZE]);
            }
            printf("
    ");
    }
    
    void queue_destory(queue_t **head)
    {
            free(*head);
            *head = NULL;
     }       

    main.c

    #include <stdio.h>
    
    #include "queue.h"
    
    int main()
    {
            queue_t *head = queue_creat();
    
            int n=10;
            while(n--)
            {
                    queue_en(head,n+1);
            }
    
            queue_show(head);
            queue_destory(&head);
    
            return 0;
    }
  • 相关阅读:
    Codeforces 798C
    Codeforces 798B
    Codeforces 798A
    HDU
    HDU
    HDU
    加速cin的技巧
    Codeforces Gym
    Codeforces Gym
    Solutions to an Equation LightOJ
  • 原文地址:https://www.cnblogs.com/Malphite/p/7571990.html
Copyright © 2011-2022 走看看