我正在尝试根据条件将值插入队列。条件是先前输入的值应大于将要插入的值。我的问题是根据我提供的数据,一个值小于所有其他值,因此其他值不会插入到队列中。
我整天都被困在这里,没有任何线索。
这是我到目前为止所做的:
#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 个值被插入。
感谢您的时间。