資料結構›Ch3 堆疊與佇列第 16 題/共 28 題
16. Circular Queue、程式追蹤
#DS-03-016中Circular Queue程式追蹤
Consider the following two functions written in C language:
void enqueue(int queue[], int *front, int *rear, int size, int value) {
if ((*rear + 1) % size == *front) {
printf("Queue is full\n");
return;
}
if (*front == -1) *front = 0;
*rear = (*rear + 1) % size;
queue[*rear] = value;
}
int dequeue(int queue[], int *front, int *rear, int size) {
if (*front == -1) {
printf("Queue is empty\n");
return -1;
}
int value = queue[*front];
if (*front == *rear) {
*front = *rear = -1;
} else {
*front = (*front + 1) % size;
}
return value;
}
Assume the queue Q with size = 5, initially empty (front = -1, rear = -1). What will be the content of the array Q after executing the given sequence of operations?
enqueue(Q, &front, &rear, size, 10);
enqueue(Q, &front, &rear, size, 20);
dequeue(Q, &front, &rear, size);
enqueue(Q, &front, &rear, size, 30);
enqueue(Q, &front, &rear, size, 40);
enqueue(Q, &front, &rear, size, 50);
dequeue(Q, &front, &rear, size);
enqueue(Q, &front, &rear, size, 60);
enqueue(Q, &front, &rear, size, 80);
enqueue(Q, &front, &rear, size, 90);
dequeue(Q, &front, &rear, size);
dequeue(Q, &front, &rear, size);
enqueue(Q, &front, &rear, size, 100);
📄 成大114
▤完整推導請見《WH 資工筆記 · 資料結構》Ch3 堆疊與佇列