停車場為單通道(棧結構),容量 n 輛車。車輛按到達順序由北向南停放(棧底最早)。滿車後車輛在便道等待(隊列結構)。離車時,後到車輛需臨時移出(借用另一棧),目標車輛離開並計費,再將臨時車輛按原序移回。需記錄每筆收費(車牌、進出時間、費用),支持歷史收費統計。
| 實體 | 結構 | 關鍵字段 |
|---|---|---|
| 停車場 | 順序棧 / 鏈棧 | Car[] data; int top; int capacity; |
| 便道等待區 | 循環隊列 | Car[] data; int front, rear; int maxSize; |
| 臨時緩衝區 | 棧 | 同停車場結構 |
| 收費記錄 | 鏈表 / 文件 | plate, inTime, outTime, fee; Node* next; |
if (parkStack.top < capacity) push(parkStack, car);
else enqueue(waitQueue, car);
while (parkStack.top != targetIndex) push(tempStack, pop(parkStack));
Car leaving = pop(parkStack); // 目標車輛
calculateFee(leaving); // 計費並寫入記錄文件
while (!tempStack.empty()) push(parkStack, pop(tempStack)); // 歸位
if (!waitQueue.empty()) push(parkStack, dequeue(waitQueue)); // 便道首車入場
fprintf(fp, "%s %ld %ld %.2f\n", plate, inTime, outTime, fee); 追加寫入。fee。system("cls") 實現清屏(Windows),Linux 用 system("clear")。park.h/c, queue.h/c, fee.h/c, main.c。GitHub 搜索關鍵詞 C語言 停車場管理 棧 隊列 可找到多個完整項目供參考。