当前位置: 首页 > news >正文

数据结构->线性结构->顺序存储->静态链表

一、思路

        链表由节点组成。

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)
{// 初始化学生s1student s1 = {"1-zhangsan", 20, Male, NULL};// 初始化学生s2student 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;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Go 1.22 remote error: tls: handshake failure
  • windows10 安装CUDA教程
  • 【学习笔记】无人机系统(UAS)的连接、识别和跟踪(五)-无人机跟踪
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 堆内存申请(100分) - 三语言AC题解(Python/Java/Cpp)
  • 前端页面是如何禁止被查看源码、被下载,被爬取,以及破解方法
  • Apache Bigtop 正式支持 openEuler,共创大数据新生态
  • 智能火灾预警系统:基于深度学习的火焰与烟雾检测平台
  • 力扣355.设计推特
  • 谷粒商城实战笔记-43-前端基础-Vue-使用Vue脚手架进行模块化开发
  • 【人工智能】Transformers之Pipeline(五):深度估计(depth-estimation)
  • 第三篇 Vue项目目录结构介绍
  • (35)远程识别(又称无人机识别)(二)
  • Java后端开发岗位面试经验总结:技术深度与实践能力的考验
  • CSS(二)——CSS 背景
  • 【C++】:AVL树的深度解析及其实现
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • $translatePartialLoader加载失败及解决方式
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • CODING 缺陷管理功能正式开始公测
  • Java 内存分配及垃圾回收机制初探
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Vue官网教程学习过程中值得记录的一些事情
  • 基于Android乐音识别(2)
  • 使用Gradle第一次构建Java程序
  • 原生Ajax
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # 数仓建模:如何构建主题宽表模型?
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (PADS学习)第二章:原理图绘制 第一部分
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (一)kafka实战——kafka源码编译启动
  • (转)ORM
  • (转)VC++中ondraw在什么时候调用的
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .net 7和core版 SignalR
  • .NET 反射 Reflect
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET开发不可不知、不可不用的辅助类(一)
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • @angular/cli项目构建--Dynamic.Form
  • @开发者,一文搞懂什么是 C# 计时器!
  • [AR]Vumark(下一代条形码)
  • [CISCN2019 华东北赛区]Web2
  • [codeforces]Checkpoints
  • [flink]部署模式
  • [Flutter] extends、implements、mixin和 abstract、extension的使用介绍说明
  • [FSCTF 2023]细狗2.0