数据结构(c语言版)模拟超市排队收银系统的的用户编号代码
时间: 2024-10-28 12:10:10 浏览: 43
在C语言中,模拟超市排队收银系统的用户编号通常可以使用数组或者链表数据结构来表示。这里我们以链表为例,因为它更灵活,可以动态添加用户。首先,我们可以创建一个结构体`User`来存储用户信息,包括用户ID:
```c
// 定义用户结构体
typedef struct {
int id; // 用户编号
char name[50]; // 用户姓名
bool isCheckout; // 是否结账标志
} User;
// 创建一个用户节点
struct Node {
User data;
struct Node* next;
};
// 链表头指针
struct Node* head = NULL;
```
然后,在系统中,每当有新用户加入队伍,你可以创建一个新的`Node`实例,并设置其`data.id`字段为新的用户编号:
```c
void addUser(int newId, const char* newName) {
User newUser;
newUser.id = newId;
strncpy(newUser.name, newName, sizeof(newUser.name)); // 注意字符串复制安全边界
newUser.isCheckout = false;
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->data = newUser;
newNode->next = head;
head = newNode;
}
```
当需要获取用户的编号时,只需遍历链表查找对应节点即可:
```c
int getUserIdFromName(const char* name) {
for (struct Node* node = head; node != NULL; node = node->next) {
if (!strcmp(node->data.name, name)) {
return node->data.id;
}
}
return -1; // 如果未找到则返回-1
}
```
阅读全文