赞
踩
链表由节点组成。
1、分析需求,画图:
2、定义学生结构体,包含姓名、年龄、性别和下一个学生的指针:
- #include <stdio.h>
- #define N 20
-
- // 定义性别枚举类型,固定值,不是男就是女
- typedef enum{
- Female,
- Male
- }gender_type;
-
- // 定义学生结构体,包含姓名、年龄、性别和下一个学生的指针
- typedef struct stu{
- char name[N];
- unsigned char age; // 范围0~255足够用
- gender_type gender;
- struct stu *next;
- }student;

3、初始化学生:
- // 初始化学生s1
- student s1 = {"1-zhangsan", 20, Male, NULL};
- // 初始化学生s2
- student s2 = {"2-lisi", 21, Female, NULL};
- // 初始化学生s3,使用结构体初始化语法
- student s3 = {
- .name = "3-wangwu",
- .age = 22,
- .gender = Female,
- .next = NULL // 代表最后一个节点
- };
4、构建学生链表:
- s1.next = &s2;
- s2.next = &s3;
5、封装打印所有学生信息函数:
- void print_stu(student *p)
- {
- while(p != NULL){
- printf("name:%s, age:%d, gender:%d\n", p->name, p->age, p->gender);
- p = p->next;
- }
- }
6、打印所有学生信息:
- 要找到链表的第一个节点,通过首节点找下一个节点,
- 最后一个节点的特征是 next 为空,这样就遍历完成整个链表。
- print_stu(&s1); // 传入首节点的地址
- #include <stdio.h>
- #define N 20
-
- // 定义性别枚举类型
- typedef enum{
- Female,
- Male
- }gender_type;
-
- // 定义学生结构体,包含姓名、年龄、性别和下一个学生的指针
- typedef struct stu{
- char name[N];
- unsigned char age;
- gender_type gender;
- struct stu *next;
- }student;
-
- /**
- * 打印学生信息
- * @param p 学生链表的头指针
- */
- void print_stu(student *p)
- {
- while(p != NULL){
- printf("name:%s, age:%d, gender:%d\n", p->name, p->age, p->gender);
- p = p->next;
- }
- }
-
- int main(void)
- {
- // 初始化学生s1
- student s1 = {"1-zhangsan", 20, Male, NULL};
- // 初始化学生s2
- student s2 = {"2-lisi", 21, Female, NULL};
- // 初始化学生s3,使用结构体初始化语法
- student s3 = {
- .name = "3-wangwu",
- .age = 22,
- .gender = Female,
- .next = NULL
- };
-
- // 构建学生链表
- s1.next = &s2;
- s2.next = &s3;
- // 打印所有学生信息
- print_stu(&s1);
-
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。