一、思路
链表由节点组成。
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;}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |