陣列實作佇列
思路
以陣列來建立佇列,擁有兩個動作 — 加入和刪除,並且用 front 和 rear 分別指向佇列的前端和尾端。
一開始,front 和 rear 都預設為 -1,每加入一個元素,rear 的值 + 1;每刪除一個元素,front 的值 + 1。
以陣列建立的缺點是大小無法事先規劃。
以陣列來建立佇列,擁有兩個動作 — 加入和刪除,並且用 front 和 rear 分別指向佇列的前端和尾端。
一開始,front 和 rear 都預設為 -1,每加入一個元素,rear 的值 + 1;每刪除一個元素,front 的值 + 1。
以陣列建立的缺點是大小無法事先規劃。
- #include<stdio.h>
- #include<stdlib.h>
- #define max 10
- int queue[max] = {0};
- int front = -1;
- int rear = -1;
- int main(void)
- {
- int value, select = 1;
- while(rear < max - 1 && select != 3)
- {
- printf("請輸入1. 存入數值 2. 取出數值 3. 結束: ");
- scanf("%d", &select);
- switch(select)
- {
- case 1:
- printf("請輸入數值: ");
- scanf("%d", &value);
- rear++;
- queue[rear] = value;
- break;
- case 2: // 取出
- if(rear > front)
- {
- front++;
- printf("取出的值為 %d\n", queue[front]);
- queue[front] = 0; // 取完
- }
- break;
- default:
- break;
- }
- }
- printf("輸出佇列中所有元素: ");
- if(rear == max - 1)
- printf("佇列已滿\n");
- else if(front >= rear)
- printf("佇列已空\n");
- else
- {
- while(rear > front)
- {
- front++; // 都取出來
- printf("%d ", queue[front]);
- }
- printf("\n");
- }
- return 0;
- }
留言
張貼留言