0

我有一个值列表,这些值根据条件插入到队列中,然后根据条件再次推入堆栈。我想跟踪插入到队列中的每个变量,并存储每个元素被推入堆栈的时间。
简单地说我需要保持一个计时器。我怎样才能做到这一点?目前我不知道跟踪每个元素。

这是需要计数的程序的功能:

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;        
                      } 
                    }
                }
        }
    }
}   
4

1 回答 1

0

一些 IDE(visual studio 等)和调试工具(如 gdb)支持在调试时跟踪变量,但您可以在程序本身中跟踪它们。

一种方法是编写两个函数来打印队列和堆栈中的所有元素。

每次调用insert()/remove()/push()/pop()时,依次调用对应的。

作为 上一个问题中的队列,显示队列中所有元素的函数可能是:

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

堆栈的一个是相似的。

于 2013-05-31T02:10:09.083 回答