创建一个由结构体构成的数据域的链表
时间: 2024-02-24 14:58:23 浏览: 58
要创建一个由结构体构成的数据域的链表,可以按照以下步骤进行:
1. 定义一个结构体类型,例如:
```c
struct Person {
char name[20];
int age;
float height;
struct Person *next;
};
```
其中,`next` 成员是指向下一个结构体的指针。
2. 定义一个指向链表头部的指针变量 `p_head`,并将其初始化为 `NULL`。
```c
struct Person *p_head = NULL;
```
3. 使用 `malloc()` 函数为新的结构体分配内存空间,并将其插入链表中。
```c
struct Person *p_new;
p_new = (struct Person *)malloc(sizeof(struct Person));
strcpy(p_new->name, "Tom");
p_new->age = 20;
p_new->height = 1.75;
p_new->next = NULL;
if (p_head == NULL) {
p_head = p_new;
} else {
struct Person *p = p_head;
while (p->next != NULL) {
p = p->next;
}
p->next = p_new;
}
```
4. 重复步骤 3,插入更多的结构体,直到链表创建完成。
5. 遍历链表,输出每个结构体中的数据。
```c
struct Person *p = p_head;
while (p != NULL) {
printf("Name: %s\n", p->name);
printf("Age: %d\n", p->age);
printf("Height: %.2f\n", p->height);
printf("\n");
p = p->next;
}
```
6. 释放链表中每个结构体所占用的内存空间。
```c
struct Person *p = p_head;
while (p != NULL) {
struct Person *temp = p;
p = p->next;
free(temp);
}
```
这样就创建了一个由结构体构成的数据域的链表,通过遍历链表可以访问每个结构体中的数据。需要注意的是,在使用完链表后,需要逐个释放其中每个结构体所占用的内存空间。
阅读全文