飞机到达目的地后,游客的行李会进入传送带,由游客自行在取行李处拿取,虽然机场出口处,有工作人员在检查,但也难免会出现拿错行李的事情。请用c语言 线性表顺序表 为机场设计一个游客取行李的程序,游客在取行李处,输入自己的身份证号后才能取到自己的行李。 要求: 使用线性表实现行李存储,行李信息表如下: 行李编号 行李航班 姓名 身份证号 行李状态 001 UC8866 张里 510199909090002 到达 002 NI7755 李丽 510200012290001 已取 003 MQ9090 王一 510198810090003 未取 004 BU8080 赵山 610197708080022 未到达 游客输入身份证号,即可获取对应行李箱状态,并领取本人行李箱。 显示欢迎类语句,为游客增加美好的体验感。 代码符合规范,正确、易读、易操作。 分析代码的运行效率,如时间复杂度和空间复杂度。
时间: 2023-10-11 20:12:59 浏览: 169
以下是使用线性表顺序表实现机场取行李的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 100 // 行李存储表的最大长度
// 行李信息结构体
typedef struct {
char id[20]; // 身份证号
char flight[20]; // 航班号
char name[20]; // 姓名
char luggage_id[20]; // 行李编号
char status[10]; // 行李状态(到达/未到达/已取)
} Luggage;
// 行李存储表结构体
typedef struct {
Luggage data[MAXSIZE]; // 行李信息数组
int length; // 当前行李数量
} LuggageList;
// 初始化行李存储表
void initLuggageList(LuggageList *list) {
list->length = 0;
}
// 向行李存储表中添加行李信息
void addLuggage(LuggageList *list, Luggage luggage) {
if (list->length >= MAXSIZE) {
printf("行李存储表已满,无法添加新行李!\n");
return;
}
list->data[list->length] = luggage;
list->length++;
}
// 根据身份证号查找行李信息
int findLuggageById(LuggageList list, char *id) {
int i;
for (i = 0; i < list.length; i++) {
if (strcmp(list.data[i].id, id) == 0) {
return i; // 返回行李信息在存储表中的下标
}
}
return -1; // 表示未找到对应身份证号的行李信息
}
// 修改行李状态为“已取”
void updateLuggageStatus(LuggageList *list, int index) {
strcpy(list->data[index].status, "已取");
}
int main() {
LuggageList list;
initLuggageList(&list);
// 初始化行李信息
Luggage luggage1 = {"510199909090002", "UC8866", "张里", "001", "到达"};
Luggage luggage2 = {"510200012290001", "NI7755", "李丽", "002", "已取"};
Luggage luggage3 = {"510198810090003", "MQ9090", "王一", "003", "未取"};
Luggage luggage4 = {"610197708080022", "BU8080", "赵山", "004", "未到达"};
// 向行李存储表中添加行李信息
addLuggage(&list, luggage1);
addLuggage(&list, luggage2);
addLuggage(&list, luggage3);
addLuggage(&list, luggage4);
printf("欢迎使用机场取行李系统!\n");
while (1) {
char id[20];
printf("请输入您的身份证号(输入q退出):");
scanf("%s", id);
if (strcmp(id, "q") == 0) {
break;
}
int index = findLuggageById(list, id);
if (index == -1) {
printf("未找到对应身份证号的行李信息!\n");
} else {
printf("您的行李状态为:%s\n", list.data[index].status);
if (strcmp(list.data[index].status, "已取") == 0) {
printf("您已经取走行李!\n");
} else {
updateLuggageStatus(&list, index);
printf("请在取行李处领取您的行李!\n");
}
}
}
return 0;
}
```
该程序的时间复杂度为O(n),空间复杂度为O(n),其中n为行李数量,因为程序需要遍历整个行李存储表来查找对应身份证号的行李信息,所以时间复杂度为O(n);同时程序需要使用一个长度为n的数组来存储行李信息,所以空间复杂度为O(n)。
阅读全文