zoukankan      html  css  js  c++  java
  • 数据结构----队列

    队列 先入先出 FIFO

     如果      rear 等于front      说明当前队列是空的

     如果      Q->rear + 1 整除队列大小 == Q->front  代表队列是满了 没法继续插入了

    #include<stdio.h>

    #include<stdlib.h>

    #include<string.h>

    #define MaxQsize 1000

    #define ERROR -1

    struct      Queue{

             int customer[MaxQsize];            #一个一般的数组

             int rear;                                      #一个表示后的int

             int front;                                     #一个表示前的int

    };

    typedef struct Queue Queue;           #改名字

    Queue * initialQ(){
    Queue *q = NULL;
    q = (Queue *)malloc(sizeof(Queue));
    q->rear = q->front = 0;          #初始化
    return q;
    }

    bool is_emptyq(Queue *Q){      #是否为空
      if(Q->front == Q->rear){
        return true;
      }else{
        return false;
      }
    }

    bool is_fullq(Queue *Q){            #是否为满
      if((Q->rear + 1) % MaxQsize == Q->front){
        return true;
      }else{
        return false;
      }
    }

    void addQ(Queue *Q,int num){
      if(is_fullq(Q)){
        printf("满了,无法添加 ");
        return ;
      }else{
        Q->customer[Q->rear] = num;
        Q->rear = (Q->rear+1) % MaxQsize;            #加一
        printf("添加了%d ",num);
      }
    }


    int deleteQ(Queue *Q){
      int item;
      if(is_emptyq(Q)){
        printf("空的 ");
        return ERROR;
      }else{
        item = Q->customer[Q->front];

        Q->customer[Q->front] = 0;                    #删除后 为0
        Q->front = (Q->front+1) % MaxQsize;   #front加一 
        printf("拿出了%d ",item);
        return item;
       }
    }


    void print_list(Queue *Q){
      int i=0;
      printf("[");
      for(i=0;i<MaxQsize;i++){
        printf("%d,",Q->customer[i]);
      }
      printf("] ");
    }

    int main(){
      int N,i,cur,flag;
      Queue *q1 = initialQ();
      addQ(q1,1);
      addQ(q1,2);
      addQ(q1,3);
      addQ(q1,4);
      print_list(q1);
      deleteQ(q1);
      print_list(q1);
      addQ(q1,5);
      print_list(q1);
      deleteQ(q1);
      print_list(q1);
      addQ(q1,6);
      print_list(q1);
      deleteQ(q1);
      print_list(q1);
      deleteQ(q1);
      print_list(q1);
      deleteQ(q1);
      deleteQ(q1);
      deleteQ(q1);

      return 0;

    }

  • 相关阅读:
    创建DataFrame https://www.cnblogs.com/andrew-address/p/13040035.html
    vim
    python 上下文管理协议
    AutoLisp 函数总结
    Visual Lisp 专题
    python基础之字符编码
    9月24号面试总结(康拓普1面)
    9月20号面试总结(zhongluan)
    9月20号面试总结(shangyun)
    9.19面试总结(ximei)
  • 原文地址:https://www.cnblogs.com/hywhyme/p/11571815.html
Copyright © 2011-2022 走看看