停车场管理系统栈队列代码
时间: 2023-08-30 18:12:19 浏览: 105
以下是使用两个栈实现队列和停车场管理系统的代码示例(使用Python语言):
```python
# 定义一个队列类
class MyQueue:
def __init__(self):
self.stackA = [] # 入队栈
self.stackB = [] # 出队栈
def push(self, x):
self.stackA.append(x)
def pop(self):
if not self.stackB:
while self.stackA:
self.stackB.append(self.stackA.pop())
return self.stackB.pop()
def empty(self):
return not self.stackA and not self.stackB
# 定义一个停车场管理类
class ParkingLot:
def __init__(self, capacity):
self.capacity = capacity # 停车场容量
self.current_count = 0 # 当前停车数量
self.entry_queue = MyQueue() # 进入队列
self.exit_queue = MyQueue() # 出去队列
def is_full(self):
return self.current_count == self.capacity
def is_empty(self):
return self.current_count == 0
def park(self, car_id):
if self.is_full():
print("停车场已满,无法停车!")
return False
else:
self.entry_queue.push(car_id)
self.current_count += 1
print(f"车辆{car_id}已停入停车场,当前停车数量为{self.current_count}")
return True
def leave(self, car_id):
if self.is_empty():
print("停车场已空,无车辆可离开!")
return False
else:
while not self.entry_queue.empty():
car = self.entry_queue.pop()
if car != car_id:
self.exit_queue.push(car)
else:
break
while not self.exit_queue.empty():
self.entry_queue.push(self.exit_queue.pop())
self.current_count -= 1
print(f"车辆{car_id}已离开停车场,当前停车数量为{self.current_count}")
return True
```
使用示例:
```python
parking_lot = ParkingLot(3) # 创建一个容量为3的停车场
parking_lot.park("A001") # 车辆A001进入停车场
parking_lot.park("A002") # 车辆A002进入停车场
parking_lot.park("A003") # 车辆A003进入停车场,此时停车场已满
parking_lot.leave("A002") # 车辆A002离开停车场
parking_lot.park("A004") # 车辆A004进入停车场
parking_lot.leave("A001") # 车辆A001离开停车场
parking_lot.leave("A003") # 车辆A003离开停车场
parking_lot.leave("A004") # 车辆A004离开停车场,此时停车场已空
```
输出结果:
```
车辆A001已停入停车场,当前停车数量为1
车辆A002已停入停车场,当前停车数量为2
停车场已满,无法停车!
车辆A002已离开停车场,当前停车数量为1
车辆A004已停入停车场,当前停车数量为2
车辆A001已离开停车场,当前停车数量为1
车辆A003已离开停车场,当前停车数量为0
车辆A004已离开停车场,当前停车数量为0
```
阅读全文