用c语言数据结构写长包房
时间: 2024-10-14 08:13:46 浏览: 20
c语言数据结构期末大作业-家族族谱管理
5星 · 资源好评率100%
在C语言中,我们可以使用链表数据结构来模拟长包房的概念,因为链表可以动态地存储和管理房间的分配情况。下面是一个简单的例子,我们将创建一个`Room`节点结构体来表示每个房间,并使用链表维护所有可用的房间。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义一个Room结构体,包含房间ID、是否已被预订的标志
typedef struct Room {
int roomID;
int isBooked; // 0 表示空闲,1 表示已预订
struct Room* next; // 指向下一个房间
} Room;
// 创建新房间并将其添加到链表尾部
Room* createRoom(int id) {
Room* newRoom = (Room*)malloc(sizeof(Room));
if (!newRoom) {
printf("Memory allocation failed.\n");
return NULL;
}
newRoom->roomID = id;
newRoom->isBooked = 0;
newRoom->next = NULL;
return newRoom;
}
// 验证并设置房间是否预订
void bookRoom(Room** head, int roomID) {
Room* current = *head;
while (current != NULL) {
if (current->roomID == roomID && !current->isBooked) {
current->isBooked = 1;
printf("Room %d booked successfully.\n", roomID);
break;
}
current = current->next;
}
}
// 打印当前所有房间的状态
void displayRooms(Room* head) {
Room* current = head;
while (current != NULL) {
printf("Room %d: %s\n", current->roomID, current->isBooked ? "Occupied" : "Available");
current = current->next;
}
}
int main() {
// 初始化链表为空
Room* roomList = NULL;
// 添加一些房间
roomList = createRoom(1); // 空闲
roomList = createRoom(2); // 空闲
roomList = createRoom(3); // 空闲
// 预订房间
bookRoom(&roomList, 2);
// 显示当前房间状态
displayRooms(roomList);
return 0;
}
```
阅读全文