資料結構›Ch3 堆疊與佇列
第 16 題/共 28 題
◀ DS 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 堆疊與佇列
本章題號 · 1–20 / 28