陣列實作佇列
思路
以陣列來建立佇列,擁有兩個動作 — 加入和刪除,並且用 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; }
留言
張貼留言