用C语言的链表实现酒店信息管理系统的代码
时间: 2024-09-13 07:06:01 浏览: 17
在C语言中,使用链表来实现一个酒店信息管理系统通常涉及到定义一个结构体来表示酒店中的房间信息,然后创建一个链表来存储这些房间信息。下面是一个简单的例子来展示如何实现这样的系统:
首先定义房间信息的结构体,包含一些基本信息,如房间号、房价等。
```c
#include <stdio.h>
#include <stdlib.h>
// 定义房间信息结构体
typedef struct Room {
int roomNumber; // 房间号
float price; // 房价
int isBooked; // 预订状态,1表示已预订,0表示未预订
struct Room *next; // 指向下一个房间信息的指针
} Room;
// 创建房间节点
Room* createRoom(int roomNumber, float price) {
Room *newRoom = (Room*)malloc(sizeof(Room));
if (newRoom) {
newRoom->roomNumber = roomNumber;
newRoom->price = price;
newRoom->isBooked = 0;
newRoom->next = NULL;
}
return newRoom;
}
// 添加房间到链表
void addRoom(Room **head, int roomNumber, float price) {
Room *newRoom = createRoom(roomNumber, price);
if (*head == NULL) {
*head = newRoom;
} else {
Room *current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newRoom;
}
}
// 预订房间
void bookRoom(Room *head, int roomNumber) {
Room *current = head;
while (current != NULL) {
if (current->roomNumber == roomNumber) {
if (current->isBooked == 0) {
current->isBooked = 1;
printf("房间号为 %d 的房间已成功预订。\n", roomNumber);
} else {
printf("房间号为 %d 的房间已被预订。\n", roomNumber);
}
return;
}
current = current->next;
}
printf("未找到房间号为 %d 的房间。\n", roomNumber);
}
// 打印所有房间信息
void printRooms(Room *head) {
Room *current = head;
while (current != NULL) {
printf("房间号:%d, 房价:%.2f, 状态:%s\n",
current->roomNumber, current->price,
current->isBooked ? "已预订" : "未预订");
current = current->next;
}
}
// 释放链表内存
void freeRooms(Room **head) {
Room *current = *head;
Room *next;
while (current != NULL) {
next = current->next;
free(current);
current = next;
}
*head = NULL;
}
int main() {
Room *head = NULL; // 酒店房间链表的头指针
// 添加一些房间信息
addRoom(&head, 101, 150.0);
addRoom(&head, 102, 180.0);
addRoom(&head, 103, 200.0);
// 打印房间信息
printRooms(head);
// 预订一个房间
bookRoom(head, 102);
// 再次打印房间信息,查看预订结果
printRooms(head);
// 释放链表内存
freeRooms(&head);
return 0;
}
```
在上述代码中,我们定义了房间信息的结构体`Room`,以及一系列操作这些房间信息的函数,如创建房间、添加房间、预订房间、打印房间信息和释放链表内存。这样的链表结构可以动态地管理房间信息,进行添加、查找和预订等操作。