定义一个学生的结构体,仅含有2个数据记录,name和no;在此基础上,以静态的方式创建一个含有4个学生的链表;并将链表的信息输出。
时间: 2024-02-22 08:56:52 浏览: 91
好的,下面是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20 // 定义学生姓名的最大长度
// 定义学生结构体
typedef struct student {
char name[MAX_NAME_LEN];
int no;
struct student *next;
} Student;
int main() {
// 静态创建4个学生结构体
Student s1 = {"Tom", 1, NULL};
Student s2 = {"Jerry", 2, NULL};
Student s3 = {"Alice", 3, NULL};
Student s4 = {"Bob", 4, NULL};
// 将学生结构体串联成链表
s1.next = &s2;
s2.next = &s3;
s3.next = &s4;
// 输出链表信息
Student *p = &s1; // 指向链表头节点的指针
while (p != NULL) {
printf("Name: %s, No: %d\n", p->name, p->no);
p = p->next;
}
return 0;
}
```
上述代码中,我们先定义了一个含有2个数据记录的学生结构体,然后静态创建了4个学生结构体并通过指针将它们串联成一个链表。最后遍历链表,输出每个学生的信息。
需要注意的是,我们在定义学生姓名时使用了宏定义`MAX_NAME_LEN`来限制了学生姓名的最大长度,这是一种良好的编程习惯。同时,由于这是一个静态链表,因此我们无需手动为每个节点分配内存空间,这也是静态链表的一个优点。
阅读全文