宿題プロジェクトのごく一部のために、C でキューを実装する必要があります。私はこれを数年間さまざまな言語で行ってきたので、こんなに苦労していることに驚いています. 私の問題は、ヘッドの値が最新の付加価値に継続的に変更されていることです。
これまでの私のコードは次のとおりです。
void Enqueue( fifo* queue, int customerData)
{
//Determine if a head or tail exists
int tailExists = 0;
if(queue->tail->customerId >= 0){
tailExists = 1;
}
//Create new elements
struct fifo_element a, *element;
element = &a;
if(tailExists == 1)
printf("test2 the head is %d\t", queue->head->customerId);
element->customerId = customerData;
if(tailExists == 1)
printf("test3 the head is %d\t", queue->head->customerId);
//Set the next element to the current tail
if(tailExists == 1)
element->next = queue->tail;
else
element->next = NULL;
//Set the prev element to null
element->prev = NULL;
//Set the last element's previous to the new element
if(tailExists == 1){
queue->tail->prev = element;
}
//Set the tail to the new element
queue->tail = element;
if(tailExists == 0){
queue->head = element;
}
printf("the head is %d\t", queue->head->customerId);
printf("the tail is %d\t", queue->tail->customerId);
}
printf 行に基づいて、この行element->customerId = customerData;
によって Head 値が変更されています。しかし、これがどのように可能であるかはわかりません...なぜこれが起こっているのですか?
(私のテスト プログラムは、0->4 の for ループを実行し、enqueue を customerData 値 i で呼び出します)。