c语言表示由结构体组成的列表
时间: 2023-10-22 21:05:02 浏览: 146
在 C 语言中,可以使用结构体数组或者链表来表示由结构体组成的列表。
1. 使用结构体数组
可以定义一个结构体来表示列表中的元素,然后定义一个结构体数组来存储多个元素。例如:
```c
#include <stdio.h>
#include <string.h>
typedef struct {
char name[20];
int age;
} Person;
int main() {
Person persons[3] = {
{"Alice", 20},
{"Bob", 25},
{"Charlie", 30}
};
for (int i = 0; i < 3; i++) {
printf("%s: %d\n", persons[i].name, persons[i].age);
}
return 0;
}
```
2. 使用链表
可以定义一个结构体来表示链表的节点,节点包含列表中的元素和指向下一个节点的指针。然后定义一个链表头指针来指向链表的头节点。例如:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct Person {
char name[20];
int age;
struct Person *next;
} Person;
int main() {
Person *head = NULL;
Person *person1 = (Person*)malloc(sizeof(Person));
strcpy(person1->name, "Alice");
person1->age = 20;
person1->next = NULL;
Person *person2 = (Person*)malloc(sizeof(Person));
strcpy(person2->name, "Bob");
person2->age = 25;
person2->next = NULL;
Person *person3 = (Person*)malloc(sizeof(Person));
strcpy(person3->name, "Charlie");
person3->age = 30;
person3->next = NULL;
head = person1;
person1->next = person2;
person2->next = person3;
Person *p = head;
while (p != NULL) {
printf("%s: %d\n", p->name, p->age);
p = p->next;
}
return 0;
}
```
需要注意的是,在使用链表时需要注意内存管理,需要手动分配和释放节点的内存。
阅读全文