あらゆる種類のメニューオプション(すべて実行されます)を備えたキューを実装するプログラムを作成する必要があります。「ポップ」機能に問題があります。
私のプログラムは、従業員のためのレストランの順番待ちリストです。顧客がレストランに電話をかけたり、レストランに来たりするたびに、彼らは順番待ちリストに入れられます。ポップする(着席する)唯一の方法は、顧客のステータスがレストランで待機している場合です。お客さんを電話からレストランで待つように変える部分を正しく書きました。
また、グループのサイズがテーブルのサイズよりも大きい場合は、次のノードに移動して、次のグループが着席する基準に適合しているかどうかを確認することになっています。
enum status(WAIT,CALL);
typedef struct restaurant
{
//stuff
}list;
//I call pop in the main as follows:
pop(&head, &tail);
void pop(list** head, list** tail)
{
list* temp = *head;
int tableSize;
if(*head == *tail && *tail == NULL)
{
printf("The queue is empty... exitting program... \n");
exit(EXIT_FAILURE);
}
printf("What is the table size? ");
scanf(" %d", &tableSize);
if(temp->groupSize > tableSize || temp->waitStatus == CALL)
while(temp->groupSize > tableSize || temp->waitStatus == CALL)
temp = temp->nextNode;
else
*head = (*head)->nextNode;
if(*tail == temp)
*tail = (*tail)->nextNode;
free(temp);
}
出力を表示するときに、キューの最初の人をスキップする必要がある場合、インスタンス内のノードは削除されません。ただし、最初の人が基準を満たしている場合は機能します。どうしてこれなの?