DAY13 链表

数组

静态数组

例子 :
int nums[5] = {0};
struct person ps[5];
缺点 :
        1,无法修改地址
        2,无法动态定义长度
        3,占用内存过大或过小
        4,增删速度慢
优点
        数组的内存是连续开辟的, 所以读取速度快

动态数组

例子 :
int *nums = (int *) calloc(5,sizeof(int));
struct person *ps = (struct person *)calloc(5,sizeof(struct
person));
缺点 :
        增删速度慢
        编写代码较为复杂
优点 :
        读取效率高

常用的数据结构

1, 数组结构 : 内存连续开辟 ,
2, 链表结构 : 离散开辟
3,
4, 二叉树 ( 均衡二叉树 , 非均衡二叉树 )
5,

链表结构

分类:

单链表

        一个节点只记录下一个节点的地址

双链表

        一个节点即记录下一个节点的地址,也记录上一个节点的地址

设计节点

将多个学员信息设计为链表

单链表节点设计

typedef struct student

{
// 数据域
        char name[50];
        char sex[5];
        int num;
        double score;
// 指针域
        struct student *next;
}Stu;

双链表节点设计

typedef struct student
{
// 数据域
        char name[50];
        char sex[5];
        int num;
        double score;
// 指针域
        struct student *next;
        struct student *head;
}Stu;

总结

typedef struct 结构体名称
{
// 数据域
// 指针域
} 别名 ;

静态链表

#include <stdio.h>
// 设计的节点
typedef struct student
{
// 数据域
        char name[50];
        char sex[5];
        int num;
        double score;
// 指针域
        struct student *next;
}Stu;
int main(int argc, char const *argv[])
{
        Stu s01 = {"张三 "," ",1,99,NULL};
        Stu s02 = {"李四 "," ",2,69,NULL};
        Stu s03 = {"王五 "," ",3,9,NULL};
        Stu s04 = {"马六 "," ",4,79,NULL};
        Stu s05 = {"候七 "," ",5,92,NULL};
        Stu *head = &s01;//将 s01 做完首节点
        s01.next = &s02;//将 s02 设置为 s01 的下一个节点
        s02.next = &s03;//将 s03 设置为 s02 的下一个节点
        s03.next = &s04;//将 s04 设置为 s03 的下一个节点
        s04.next = &s05;//将 s05 设置为 s04 的下一个节点
// 链表的遍历
//pd 当前节点
        Stu *pd = head;
        while(pd != NULL)
        {
        printf("%s %s %d %.2lf\n",pd->name,pd->sex,pd->num,pd->score);
// 将下一个节点作为下一轮的当前节点
        pd = pd->next;
        }
        return 0;
}

动态链表

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 设计的节点
typedef struct student
{
// 数据域
        char name[50];
        char sex[5];
        int num;
        double score;
// 指针域
        struct student *next;
}Stu;
int main(int argc, char const *argv[])
{
        Stu *s01 = calloc(1,sizeof(Stu));
        strcpy(s01->name,"张三 ");
        strcpy(s01->sex,"男 ");
        s01->num = 1;
        s01->score = 99;
        Stu *s02 = calloc(1,sizeof(Stu));
        strcpy(s02->name,"张三 2");
        strcpy(s02->sex,"男 ");
        s02->num = 1;
        s02->score = 99;
        Stu *s03 = calloc(1,sizeof(Stu));
        strcpy(s03->name,"张三 3");
        strcpy(s03->sex,"男 ");
        s03->num = 1;
        s03->score = 99;
        Stu *s04 = calloc(1,sizeof(Stu));
        strcpy(s04->name,"张三 4");
        strcpy(s04->sex,"男 ");
        s04->num = 1;
        s04->score = 99;
        Stu *s05 = calloc(1,sizeof(Stu));
        strcpy(s05->name,"张三 5");
        strcpy(s05->sex,"男 ");
        s05->num = 1;
        s05->score = 99;
        Stu *head = s01;//将 s01 做完首节点
        s01->next = s02;//将 s02 设置为 s01 的下一个节点
        s02->next = s03;//将 s03 设置为 s02 的下一个节点
        s03->next = s04;//将 s04 设置为 s03 的下一个节点
        s04->next = s05;//将 s05 设置为 s04 的下一个节点
// 链表的遍历
//pd 当前节点
        Stu *pd = head;
        while(pd != NULL)
        {
        printf("%s %s %d %.2lf\n",pd->name,pd->sex,pd->num,pd->score);
// 将下一个节点作为下一轮的当前节点
        pd = pd->next;
        }
        return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/135623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中对象转型

理解&#xff1a; 有一个对象 new ADHero(), 同时也有一个引用ad 对象是有类型的&#xff0c; 是ADHero 引用也是有类型的&#xff0c;是ADHero 一般来说引用类型和对象类型是一样的&#xff0c;当引用类型和对象类型不一致就要考虑类型转换 简单判断&#xff1a;把右边的当…

查询优化器:RBO与CBO

SQL查询优化器 1、数据库系统发展简史2、SQL查询优化器3、查询优化器分类4、查询优化器执行过程5、CBO框架Calcite简介 1、数据库系统发展简史 数据库系统诞生于20世纪60年代中期&#xff0c;至今已有近50多年的历史&#xff0c;其发展经历了三代演变&#xff0c;造就了四位图灵…

如何更改IP地址为美国IP?美国静态住宅代理如何搭建?

相信很多做跨境电商或外贸如TikTok shop、Facebook商店、Amazon、领英的玩家都需要搭建独享的美国IP环境来运营店铺&#xff0c;那么如何搭建稳定独享的IP环境呢&#xff1f;加下来为你详细介绍&#xff0c;助力您的跨境业务。 一、选择合适的代理IP 代理IP可以帮助隐藏用户真…

RT-Thread 11. Scons 选择不同的编译器编译BSP

1.使用gcc编译工程&#xff0c;生成elf、bin文件 如果是 ARM 平台的芯片&#xff0c;则可以使用 Env 工具&#xff0c;输入 scons 命令直接编译 BSP&#xff0c;这时候默认使用的是 ARM GCC 编译器&#xff0c;因为 Env 工具带有 ARM GCC 编译器。 2.使用template.uvproj 生成…

Java 萌新入门 -- 一些常见的基础知识点

文章目录 前言第一章.java语言概述java语言基础1.程序文档风格和注释2.从键盘读取数据3.变量与赋值4.java标识符5.关于数据类型与逻辑运算符6.限制输出 小数位数&#xff1a;&#xff08;用第三种&#xff09;7.关于带标签的的循环控制语句 第二章.类和对象与数组的定义1.方法设…

搭建嵌入式GDB调试环境以及VSCode+gdbserver 图形化调试

目录 1 搭建嵌入式gdb调试环境 1.1 交叉编译工具链自带的gdb和gdbserver 1.2 使用gdb进行嵌入式程序调试 1.2.1编写简单测试程序 1.2.2 gdb调试程序 1.3 源码编译gdb和gdbserver 1.3.1 下载gdb和gdbserver源码 1.3.2 编译gdb 1.3.3 移植gdbserver 2 VSCodegdbserver 图…

Pandas - 数据合并

DataFrame数据合并主要使用merge()方法和concat()方法。 1.数据合并&#xff08;merge()方法&#xff09; Pandas模块的merge()进行数据合并时&#xff0c;两个DataFrame对象必须有相同的列。 1.常规合并 import pandas as pddf1 pd.DataFrame({编号:[mr001,mr002,mr003],语…

单片机程序无法下载?

原因一&#xff1a;电源问题 电源可能是导致STM32微控制器无法下载程序的一个常见原因。确保电源稳定对于正常运行和下载程序至关重要。以下是一些电源问题&#xff1a; 1. 电源电压不足&#xff1a;如果STM32微控制器没有足够的电压供应&#xff0c;它可能无法正常工作或下载程…

22款奔驰GLS450升级中规主机 实现导航地图 中文您好奔驰

很多平行进口的奔驰GLS都有这么一个问题&#xff0c;原车的地图在国内定位不了&#xff0c;语音交互功能也识别不了中文&#xff0c;原厂记录仪也减少了&#xff0c;使用起来也是很不方便的。星骏汇小许 Xjh15863 其实很简单&#xff0c;我们只需要更换一台中规的新主机就可以实…

华为政企网络安全产品集

产品类型产品型号产品说明 防火墙及应用安全网关ASG5505ASG5000系列上网行为管理产品&#xff08;以下简称“ASG5000”&#xff09;是华为面向各类企业、政府、大中型数据中心以及各类无线非经营性场所推出的业界领先的综合上网行为管理产品。 该系列产品可深度识别、管控和…

【数据结构】树与二叉树(六):二叉树的链式存储

文章目录 5.1 树的基本概念5.1.1 树的定义5.1.2 森林的定义5.1.3 树的术语5.1.4 树的表示 5.2 二叉树5.2.1 二叉树1. 定义2. 特点3. 性质引理5.1&#xff1a;二叉树中层数为i的结点至多有 2 i 2^i 2i个&#xff0c;其中 i ≥ 0 i \geq 0 i≥0。引理5.2&#xff1a;高度为k的二叉…

Linux家目录变成了-bash-4.2$

Linux家目录变成了-bash-4.2$ Mark a workarround: 使用root用户&#xff0c;执行cp -a /etc/skel/. /home/zookeeper/&#xff08;不是root用户也可以&#xff09; 其中/home/zookeeper/目录是对应自己的家目录地址~ 若有帮到你&#xff0c;记得点赞&#xff0c;收藏呀…

『MySQL快速上手』-⑤-数据类型

文章目录 1.数据类型有哪些2.数值类型2.1 tinyint 类型2.2 bit 类型2.3 小数类型2.3.1 float2.3.2 decimal 3.字符串类型3.1 char3.2 varchar3.2 char 和 varchar 比较 4.日期和时间类型5.enum和set 1.数据类型有哪些 MySQL支持多种数据类型&#xff0c;这些数据类型可用于定义…

【AntDesign】Docker部署

docker部署是主流的部署方式&#xff0c;极大的方便了开发部署环境&#xff0c;保持了环境的统一&#xff0c;也是实现自动化部署的前提。 1 项目的目录结构 dist: 使用build打包命令&#xff0c;生成的打包目录 npm run build : 打包项目命令 docker: 存放docker容器需要修改…

Python爬虫-获取汽车之家车家号

前言 本文是该专栏的第9篇,后面会持续分享python爬虫案例干货,记得关注。 地址:aHR0cHM6Ly9jaGVqaWFoYW8uYXV0b2hvbWUuY29tLmNuL0F1dGhvcnMjcHZhcmVhaWQ9MjgwODEwNA== 需求:获取汽车之家车家号数据 笔者将在正文中介绍详细的思路以及采集方法,废话不多说,跟着笔者直接往…

MCU系统的调试技巧

MCU系统的调试技巧对于确保系统稳定性和性能至关重要。无论是在嵌入式系统开发的初期阶段还是在产品维护和优化的过程中&#xff0c;有效的调试技巧可以帮助开发人员快速发现和解决问题&#xff0c;本文将讨论一些MCU系统调试的技巧。 首先&#xff0c;使用调试工具是非常重要…

Push和Pull两种类型的消费者

根据使用者对读取操作的控制情况&#xff0c;消费者可分为两种类型。一个是DefaultMQPushConsumer&#xff0c;由系统控制读取操作&#xff0c;收到消息后自动调用传入的处理方法来处理&#xff1b;另一个是DefaultMQPullConsumer&#xff0c;读取操作中的大部分功能由使用者自…

[量化投资-学习笔记008]Python+TDengine从零开始搭建量化分析平台-CCI和ATR

目录 1. 指标简介CCIATR 2. 程序编写题外话 1. 指标简介 将这两个指标放在一起&#xff0c;一方面是因为这两个指标都属于摆动指数&#xff0c;可以反应市场的活跃度。 另一方面是因为CCI和ATR与之前提到的EMA,MACD,布林带的三个指标的计算基础不同。之前的三个指标都是以收盘…

RedisTemplate连接密码设置教程

最近在一个项目中使用Redis保存Token时&#xff0c;出现连接Redis报错的情况 org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhos…

智能交通和自动驾驶技术

一、定义 智能交通和自动驾驶技术是指利用先进的信息技术和人工智能技术&#xff0c;实现交通系统的智能化和自动化。智能交通和自动驾驶技术不仅可以提高交通系统的效率和安全性&#xff0c;还可以改善人们的出行体验&#xff0c;促进城市可持续发展。 智能交通和自动驾驶技…