我有一个值列表,它们根据条件插入到队列中,然后根据条件再次插入到堆栈中。我想跟踪每个变量插入队列的时间,并存储每个元素被推入堆栈的时间。
只是意味着我需要保持计时器。我怎样才能做到这一点?目前我不知道跟踪每个元素。
这是程序的功能,需要计数:
while(!isqueueFull(&belt))
{
insert(&belt,theorder->meringue); //i want to keep a timer for each of these values getting inserted
insert(&belt,theorder->chocalate);
insert(&belt,theorder->red_velvet);
insert(&belt,(theorder->spongecake));
}
value1=removes(&belt);
push(&baking,value1);
if(!isFull(&baking))
{
for(;v<=MAX;v++)
{
if(counter%4==0)
{
value1=theorder->meringue;
counter=counter+2;
}
else
{
if(!isEmpty(&baking))
{
printf("\n%d",pop(&baking));
}
else
{
value2=removes(&belt);
if(value1>=value2)
{
while(!isFull(&baking))
{
push(&baking,value2); //if this gets executed i need to store the time where the value got in to stack.
value1=value2;
counter++;
break;
}
}
if(value1<value2 && value1!=value2)
{
while(!isqueueEmpty(&belt))
{
insert(&belt,value2);
break;
}
}
}
}
}
}
答案 0 :(得分:0)
某些IDE(可视工作室等)和调试工具(作为gdb)支持在调试时跟踪变量,但您可以在程序中跟踪它们。
一种方法是打印两个函数来打印队列和堆栈中的所有元素。
每次调用insert()/ remove()/ push()/ pop()时,都会连续调用相应的一个。
作为your previous question中的队列,显示队列中所有元素的函数可能是:
int queue_display(struct Queue *q) {
if(isEmpty(q))
return 0;
else
{
int p=q->front,count=q->count;
printf("queue from front to rear:\n");
do {
printf("%d ",q->cake[p]);
count--;
p = (p+1)%10;
} while(count>0);
printf("\n\n");
}
}
堆叠的那个是相似的。