C语言实现使用链表模拟火车站售票系统。每个节点代表一名乘客,包含姓名、目的地、座位号等信息。 功能要求: 乘客购票:将新乘客信息插入链表末尾。 乘客退票:根据姓名或座位号删除对应节点。 查询车票:根据姓名或目的地查找乘客信息。 显示所有乘客信息。
时间: 2025-01-01 09:38:20 浏览: 27
在C语言中,我们可以使用结构体表示乘客及其相关信息,并通过链表数据结构来实现火车站售票系统的功能。以下是关键步骤的概述:
1. 定义结构体(struct):创建一个名为`Passenger`的结构体,包含字段如姓名(name),目的地(destination), 座位号(seatNo)等。
```c
typedef struct {
char name[50];
char destination[50];
int seatNo;
struct Passenger* next; // 指向下一个乘客的指针
} Passenger;
```
2. 链表操作:
- `insert_passenger`: 当有新乘客购票时,创建一个新的`Passenger`节点并添加到链表尾部。
- `delete_passenger_by_name` 或 `delete_passenger_by_seat`: 分别遍历链表,查找匹配姓名或座位号的乘客并删除对应的节点。可以使用`while`循环和`if`条件判断来完成。
- `search_passenger`: 提供两个函数,分别根据姓名和目的地搜索乘客,返回找到的乘客信息。
- `display_all.Passengers`: 遍历整个链表,打印出所有乘客的信息。
以下是一个简化的示例代码片段:
```c
// 初始化链表
Passenger* passengers = NULL;
// 插入乘客
void insert_passenger(char* name, char* destination, int seatNo) {
Passenger* newPassenger = (Passenger*)malloc(sizeof(Passenger));
strcpy(newPassenger->name, name);
strcpy(newPassenger->destination, destination);
newPassenger->seatNo = seatNo;
newPassenger->next = passengers;
passengers = newPassenger;
}
// 删除乘客
Passenger* delete_passenger_by_name(Passenger* head, char* name) {
while (head != NULL) {
if (strcmp(head->name, name) == 0) {
Passenger* temp = head;
head = head->next;
free(temp);
break;
}
head = head->next;
}
return head;
}
// 其他相关函数...
```
阅读全文