数据结构编写停车场管理程序
时间: 2023-11-26 12:46:19 浏览: 208
车场管理程序可以使用数据结构中的栈和队列来实现。栈可以用来模拟停车场,队列可以用来模拟车场外的便道。在C++中,可以使用STL中的stack和queue来实现。
具体实现步骤如下:
1. 定义车辆结构体,包括车牌号、到达时间和离开时间等信息。
2. 定义停车场和便道的容器,可以使用STL中的stack和queue来实现。
3. 读入输入数据序列,根据输入数据进行模拟管理。如果是车辆到达,则将车辆加入停车场或便道中;如果是车辆离开,则从停车场中找到对应车辆,计算停留时间和应缴纳费用,并将车辆从停车场中移除。
4. 输出相应的信息,包括车辆在停车场内或便道上的停车位置、汽车在停车场内停留的时间和应缴纳费用等。
示例代码如下:
```c++
#include <iostream>
#include <stack>
#include <queue>
using namespace std;
struct Car {
string plate; // 车牌号
int arrive_time; // 到达时间
int leave_time; // 离开时间
};
int main() {
stack<Car> park; // 停车场
queue<Car> road; // 便道
int capacity, n; // 停车场容量和输入数据数量
cin >> capacity >> n;
for (int i = 0; i < n; i++) {
string op, plate;
int time;
cin >> op >> plate >> time;
if (op == "arrive") { // 车辆到达
Car car = {plate, time, 0};
if (park.size() < capacity) { // 停车场未满
park.push(car);
cout << "车辆 " << plate << " 在停车场内的停车位置为 " << park.size() << endl;
} else { // 停车场已满,加入便道
road.push(car);
cout << "车辆 " << plate << " 在便道上的停车位置为 " << road.size() << endl;
}
} else { // 车辆离开
int park_time = 0, fee = 0;
// 从停车场中找到对应车辆
while (!park.empty() && park.top().plate != plate) {
road.push(park.top());
park.pop();
}
if (!park.empty()) { // 找到车辆
Car car = park.top();
park.pop();
car.leave_time = time;
park_time = car.leave_time - car.arrive_time;
fee = park_time * 10; // 停车费用为每小时10元
cout << "车辆 " << plate << " 在停车场内停留了 " << park_time << " 小时,应缴纳停车费用 " << fee << " 元" << endl;
// 便道上的车辆进入停车场
while (!road.empty() && park.size() < capacity) {
park.push(road.front());
road.pop();
}
} else { // 没有找到车辆
cout << "未找到车辆 " << plate << endl;
}
}
}
return 0;
}
```
阅读全文