基于条件的队列插入

时间:2013-05-28 13:20:34

标签: c queue structure

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

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

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

    #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));
        }
}

如何知道如何将其他值输入队列,同时检查前一个值是否大于当前值。

编辑:

我尝试添加一个计数,如果计数%value1 == 0,那么我试图通过乘以5将value1变为更大的值,但仍然只插入了这两个值。

感谢您的时间。

0 个答案:

没有答案