名字怎么录入链表

时间:2025-03-28 04:51:30 公司取名

关于将名字录入链表的操作,以下是具体步骤和示例代码,综合了单链表的基本操作和名字字段的存储方式:

一、定义链表节点结构

首先,需要定义一个包含名字字段的链表节点结构。通常名字使用字符数组存储,例如:

```c

struct Student {

int num;// 学号

char name; // 姓名(20个字符)

float score;// 成绩

struct Student* next; // 指向下一个节点的指针

};

```

注意:字符数组需要指定固定大小,如`char name`,实际使用时需确保输入不超过该长度。

二、从键盘录入名字

可以通过循环逐个输入学生信息,并将其存储到链表中。以下是示例代码:

```c

include

include

include

struct Student {

int num;

char name;

float score;

struct Student* next;

};

// 函数声明

struct Student* create_node(int num, const char* name, float score);

void insert_node(struct Student head, struct Student* new_node);

void print_list(struct Student* head);

void free_list(struct Student* head);

int main() {

struct Student* head = NULL;

int n;

printf("输入学生人数: ");

scanf("%d", &n);

for (int i = 0; i < n; i++) {

struct Student* new_node = create_node(0, "", 0.0); // 初始化节点

printf("输入学号: ");

scanf("%d", &new_node->num);

printf("输入姓名: ");

scanf("%19s", new_node->name); // 限制输入长度为19个字符(含终止符)

printf("输入成绩: ");

scanf("%f", &new_node->score);

insert_node(&head, new_node);

}

printf("\n学生信息表:\n");

print_list(head);

printf("\n");

// 释放链表内存

free_list(head);

return 0;

}

// 创建新节点

struct Student* create_node(int num, const char* name, float score) {

struct Student* new_node = (struct Student*)malloc(sizeof(struct Student));

if (!new_node) {

printf("内存分配失败!\n");

exit(1);

}

strcpy(new_node->name, name);

new_node->num = num;

new_node->score = score;

new_node->next = NULL;

return new_node;

}

// 插入节点到链表头部

void insert_node(struct Student head, struct Student* new_node) {

new_node->next = *head;

*head = new_node;

}

// 打印链表

void print_list(struct Student* head) {

struct Student* p = head;

while (p != NULL) {

printf("学号: %d, 姓名: %s, 成绩: %.1f\n", p->num, p->name, p->score);

p = p->next;

}

}

// 释放链表内存

void free_list(struct Student* head) {

struct Student* p;

while (head != NULL) {

p = head;

head = head->next;

free(p);

}

}

```

三、注意事项

输入验证:

使用`scanf`时需注意缓冲区溢出,例如使用`scanf("%19s", name)`限制输入长度为19个字符(含终止符)。

内存管理:

动态分配内存后需及时释放,避免内存泄漏。

错误处理:

如内存分配失败需退出程序。

通过以上步骤,可以高效地将名字录入链表,并实现基本操作。