0

我正在尝试根据条件将值插入队列。条件是先前输入的值应大于将要插入的值。我的问题是根据我提供的数据,一个值小于所有其他值,因此其他值不会插入到队列中。

我整天都被困在这里,没有任何线索。

这是我到目前为止所做的:

    #include<stdio.h>
    #include<malloc.h>
    #define MAX 180

    struct cakes{
      int spongecake;
      int meringue;
      int chocalate;
      int red_velvet;
      struct newcake *next;
    };

    struct Queue{
       int front;
       int rear;
       int count;
       int cake[10];
    };

    void order_out(struct cakes *); 
    void init(struct Queue *);
    int isFull(struct Queue *);
    void insert(struct Queue *,int);
    int isEmpty(struct Queue *);
    int removes(struct Queue *);

   main()
   {
      struct cakes *head;
      head=(struct cakes*)malloc(sizeof(struct cakes));
      order_out(head);
   }

   void init(struct Queue *q)
   {
        q->front=0;
        q->rear=10-1;
        q->count=0;
   }

   int isFull(struct Queue *q)
   {
        if(q->count==10)
        {
         return 1;
        }
        else 
        {
             return 0;
        }
   }

  void insert(struct Queue *q,int x)
  {
      if(!isFull(q))
      {
         q->rear=(q->rear+1)%10;
         q->cake[q->rear]=x;
         q->count++;
      }
  }

  int isEmpty(struct Queue *q)
  {
      if(q->count==0)
      {
          return 1;
      }
      else
      {
          return 0;
      }
  }

  int removes(struct Queue *q)
  {
      int caked=NULL;

      if(!isEmpty(q))
      {
          caked=q->cake[q->front];
          q->front=(q->front+1)%10;
          q->count--;
          return caked;
      }
   }

   void order_out(struct cakes *theorder)
   {
        struct Queue s;
        int k=0;
        int i=1;    
        int value1;
        int value2;

        int counter=1;
        theorder->spongecake=20;
        theorder->meringue=75;
        theorder->chocalate=40;
        theorder->red_velvet=30;


        init(&s);
        insert(&s,theorder->chocalate);

        value1=theorder->chocalate;


        for(;k<10;k++)  
        {
            if(value1>theorder->spongecake)
            {
                insert(&s,theorder->spongecake);
                value1=theorder->spongecake;
            }

            if(value1>theorder->meringue)
            {
                insert(&s,theorder->meringue);
                value1=theorder->meringue;
            }

            if(value1>theorder->red_velvet)
            {
                 insert(&s,theorder->red_velvet);
                 value1=theorder->red_velvet;
            }
        }

        while(!isEmpty(&s)) 
        {   
            printf("\n%d",removes(&s));
        }
}

关于如何使其他值进入队列的任何想法,但同时还要检查以前的值是否大于当前值。

编辑 :

如果 count % value1==0,我尝试添加一个计数含义,然后我尝试通过乘以 5 使 value1 变为更大的值,但仍然只有这 2 个值被插入。

感谢您的时间。

4

0 回答 0