c语言练习题79:设计停⻋系统

设计停⻋系统

题⽬描述: 请你给⼀个停⻋场设计⼀个停⻋系统。

停⻋场总共有三种不同⼤⼩的⻋位:⼤,中和⼩,每种尺⼨分 别有固定数⽬的⻋位。

请你实现 ParkingSystem 类:

ParkingSystem(int big, int medium, int small) 初始化 ParkingSystem 类,三个参数分别对应每种停 ⻋位的数⽬。 bool addCar(int carType) 检查是否有 carType 对应的停⻋位。 carType 有三种类型:⼤,中,⼩, 分别⽤数字 1, 2 和 3 表⽰。

⼀辆⻋只能停在 carType 对应尺⼨的停⻋位中。如果没有空⻋位,请返 回 false ,否则将该⻋停⼊⻋位并返回 true 。

• ⽰例 1:

输⼊: [ParkingSystem, addCar, addCar, addCar, addCar] [[1, 1, 0], [1], [2], [3], [1]]

输出: [null, true, true, false, false]

解释:

ParkingSystem parkingSystem = new ParkingSystem(1, 1, 0);

parkingSystem.addCar(1); // 返回 true ,因为有 1 个空的⼤⻋位

parkingSystem.addCar(2); // 返回 true ,因为有 1 个空的中⻋位

parkingSystem.addCar(3); // 返回 false ,因为没有空的⼩⻋位

parkingSystem.addCar(1); // 返回 false ,因为没有空的⼤⻋位,唯⼀⼀个⼤⻋位已经被占据了

1. parkingSystemCreate(big, medium, small) - 创建⼀个新的ParkingSystem对象, 并初始化其⼤型、中型和⼩型停⻋位的最⼤数量。

2. parkingSystemAddCar(obj, carType) - 向指定类型的停⻋位中添加⼀辆⻋。其中, obj为ParkingSystem对象,carType为⻋辆类型,可以是1(⼤型⻋)、2(中型⻋)或3(⼩型 ⻋)。如果添加成功,返回true;否则,返回false。

3. parkingSystemFree(obj) - 释放ParkingSystem对象所占⽤的内存空间。 所以,我们只需要根据题⽬要求将函数内容模拟出来。

free 函数是C标准库中的⼀个函数,⽤于释放动态分配的内存。在使⽤ malloc 、 calloc 、 realloc 等动态分配内存的函数时,需要调⽤ free 函数释放内存,以避免内存泄漏。

算法思路:

1. 定义结构体内容:设置三个变量⽤来存储⼤、中、下三个类型停⻋位数量。

2. 初始化停⻋场系统:定义结构体指针并且为之分配内存,将结构体的三个变量分别初始化为⼤、 中、⼩三个类型的停⻋位数量。

3. 添加⻋辆 :若对应停⻋位的数量还有剩余,则成功添加⻋辆,对应的停⻋位数量减⼀,返回添加 成功。否则直接返回添加失败。

4. 释放停⻋场系统内存:利⽤ free 函数释放指针内存。

代码:

#include
//定义结构体
typedef struct {
	//定义⼀个⻓度为3的数组 0: ⼤⻋位, 1: 中⻋位, 2: ⼩⻋位
	int packing[3];
}PackingSystem;
// 初始化停⻋场系统
PackingSystem* PackingSystemCreate(int big, int medium, int small) {
	PackingSystem* obj = malloc(sizeof(PackingSystem));
	//分别将三个函数参数赋值给停⻋场系统的停⻋位数量
	obj->packing[0] = big;
	obj->packing[1] = medium;
	obj->packing[2] = small;
	return obj;
}
// 添加⻋辆
bool PackingSystemAddCar(PackingSystem* obj, int carType) {
	if (obj->packing[carType - 1] == 0) {
		return false;
	}
	//否则添加成功,相应停⻋位数量减⼀
	else {
		obj->packing[carType - 1]--;
		return true;
	}
}
// 释放停⻋场系统内存
void parkingSystemFree(PackingSystem* obj) {
	free(obj);
}

可以将不同类型的车位初始化如【1,1,0】

后输入1,2,3进行测试

1:大车

2:中车

3:小车

你可能感兴趣的:(c语言,开发语言)