自学嵌入式 day19-数据结构 链表

news2025/5/17 12:48:29

二、线性表的链式存储

1.特点:
(1)线性表链式存储结构的特点是一组任意的存储单位存储线性表的数据元素,存储单元可以是连续的,也可以不连续。可以被存储在任意内存未被占用的位置上。
(2)所以前面的顺序表只需要存储数据元素信息就可以了。在链式结构中还需要一个元素存储下一个元素的地址。
(3)为了表示每个数据元素,ai与其直接后继数据元素ai+1之间的逻辑关系,对ai来说,除了存储其本身的信息外,还需要存一个指示器直接后续的信息。把存储元素信息的域叫数据域,把存储直接后继位置的域叫指针域。这两部分信息组成数据元素ai的存储映像,叫结点(Node);

2.链表结构:

3.链表的常规操作

(1)创建链表

LinkList *CreateLinkList()
{
    LinkList *ll = malloc(sizeof(DATATYPE));//分配链表表头结点内存空间
    if(NULL == ll)判断是否申请成功
    {
        fprintf(stderr,"GreateLinkList malloc");
        return NULL;
    }
    ll -> head = NULL;初始化头指针
    ll -> clen = 0;初始化链表长度
    return ll;
}

(2)头部插入

①newnote == NULL

②newnote != NULL

int IsEmpLinkList(LinkList *ll)//判断链表是否为空
{
    return ll -> clen == 0;
}

int InsertHeadLinkList(LinkList *ll,DATATYPE *data)
{
    LinkNote *newnote = malloc(sizeof(LinkNote));//申请新节点内存空间
    if(NULL == newnote)//判断是否申请成功
    {
        fprintf(stderr,"IsEmpLinkList malloc");
        return 1;

    }
    memcpy(&newnote -> data,data,sizeof(DATATYPE));//复制数据到节点
    newnote -> next = NULL;//将结点next初始化为空指针
    if(IsEmpLinkList(ll))//判断链表是否为空
    {
        ll -> head = newnote;//将头指针指向新结点
    }
    else
    {
        newnote -> next = ll -> head;//将新结点的next指向头指针,即指向原链表的头元素地址
        ll -> head = newnote;  //将头指针指向新结点
    }
    ll -> clen++;//链表长度+1
    return 0;
    
}

(3)遍历

int GetSizeofLinkList(LinkList *ll)//获取链表长度
{
    return ll -> clen;
}

int ShowLinkList(LinkList *ll)
{
    int len = GetSizeofLinkList(ll);
    LinkNote *tmp = ll -> head;//定义新结点并指向头指针
    int i;
    for(i = 0;i < len;++i)//遍历循环链表
    {
        printf("%s,%c,%d,%d\n",tmp -> data.name,tmp -> data.sex,tmp -> data.age,tmp -> data.score);
        tmp = tmp -> next;//将tmp指向下一个结点
    }
    return 0;
}

(4)查找

DATATYPE *FindLinkList(LinkList *ll,char *name)
{
    LinkNote *tmp = ll -> head;
    while(tmp)
    {
        if(0 == strcmp(tmp -> data.name,name))//判断是否是需要找的结点
        {
            return &tmp -> data;
        }
        tmp = tmp -> next;
    }
    return NULL;
}

(5)删除

int DeleteLinkList(LinkList* ll, char* name)

{

        LinkNode* tmp = ll->head;//创建临时指针指向链表头

        if (IsEmptyLinkList(ll))//判断链表是否为空

        {

                return 1;

        }

        if (0 == strcmp(tmp->data.name, name))//判断所删结点是否为头节点

        {

                ll->head = ll->head->next;//将头指针指向头节点的next

                free(tmp);//释放头结点空间

                ll->clen--;//链表个数-1

                return 0;

        }

        while (tmp->next)//所删结点不是头结点

        {

        if (0 == strcmp(tmp->next->data.name, name))//遍历查找所删结点

        {//将所删结点的前后连接起来

        LinkNode* tmp2 = tmp->next;

        tmp->next = tmp->next->next;

        free(tmp2);

        ll->clen--;

        return 0;

        }

        tmp = tmp->next;

        }

        return 1;

}

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

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

相关文章

东芝第3代SiC MOSFET助于降低应用中电源损耗

功率器件是管理和降低各种电子设备电能功耗以及实现碳中和社会的重要元器件。由于与比硅材料相比&#xff0c;碳化硅具有更高的电压和更低的损耗&#xff0c;因此碳化硅&#xff08;SiC&#xff09;被广泛视为下一代功率器件的材料。虽然碳化硅功率器件目前主要用于列车逆变器&…

PD 分离推理的加速大招,百度智能云网络基础设施和通信组件的优化实践

为了适应 PD 分离式推理部署架构&#xff0c;百度智能云从物理网络层面的「4us 端到端低时延」HPN 集群建设&#xff0c;到网络流量层面的设备配置和管理&#xff0c;再到通信组件和算子层面的优化&#xff0c;显著提升了上层推理服务的整体性能。 百度智能云在大规模 PD 分离…

官方 Elasticsearch SQL NLPChina Elasticsearch SQL

官方的可以在kibana 控制台上进行查询&#xff1a; POST /_sql { “query”: “SELECT client_ip, status FROM logs-2024-05 WHERE status 500” } NLPChina Elasticsearch SQL就无法以在kibana 控制台上进行查询&#xff0c;但是可以使用postman接口进行查询&#xff1a;

5月16日复盘-目标检测开端

5月16日复盘 一、图像处理之目标检测 1. 目标检测认知 ​ Object Detection&#xff0c;是指在给定的图像或视频中检测出目标物体在图像中的位置和大小,并进行分类或识别等相关任务。 ​ 目标检测将目标的分割和识别合二为一。 ​ What、Where 2. 使用场景 目标检测用于…

mathematics-2024《Graph Convolutional Network for Image Restoration: A Survey》

推荐深蓝学院的《深度神经网络加速&#xff1a;cuDNN 与 TensorRT》&#xff0c;课程面向就业&#xff0c;细致讲解CUDA运算的理论支撑与实践&#xff0c;学完可以系统化掌握CUDA基础编程知识以及TensorRT实战&#xff0c;并且能够利用GPU开发高性能、高并发的软件系统&#xf…

IDEA怎么汉化idea中文改回英文版

第一步:点击左上角的File&#xff0c;然后选择Setting 第二步&#xff1a;Setting页面选择 Appearance & Behavior&#xff0c;然后展开System Settings&#xff0c;然后选择 Language and Region&#xff0c;进行修改 我操作的是2024年的版本 File->Settings -> Ap…

车道线检测----CLRKDNet

今天的最后一篇 车道线检测系列结束 CLRKDNet&#xff1a;通过知识蒸馏加速车道检测 摘要&#xff1a;道路车道是智能车辆视觉感知系统的重要组成部分&#xff0c;在安全导航中发挥着关键作用。在车道检测任务中&#xff0c;平衡精度与实时性能至关重要&#xff0c;但现有方法…

从技术视角解构 Solana Meme 币生态

在高吞吐、高并发的 Solana 网络上&#xff0c;一类轻量化、高热度的代币形式正在爆发式增长——Meme Token&#xff08;迷因代币&#xff09;。尽管起源于社群文化&#xff0c;但其技术实现并非“玩笑”&#xff0c;而是一整套构建于 Solana Runtime 与 Token Extensions 之上…

智能接处警系统:以秒级联动响应重塑应急处置效能

​​随着我国能源、化工、航空等关键行业的快速发展&#xff0c;传统消防管理模式已难以满足高效应急响应的需求。国家能源局、应急管理部、民航总局均出台专项规定&#xff0c;对消防站建设提出更高要求&#xff0c;在此背景下&#xff0c;智能接处警系统正是应对这些挑战的核…

GpuGeek 网络加速:破解 AI 开发中的 “最后一公里” 瓶颈

摘要&#xff1a; 网络延迟在AI开发中常被忽视&#xff0c;却严重影响效率。GpuGeek通过技术创新&#xff0c;提供学术资源访问和跨国数据交互的加速服务&#xff0c;助力开发者突破瓶颈。 目录 一、引言&#xff1a;当算力不再稀缺&#xff0c;网络瓶颈如何破局&#xff1f; …

C# DataGridView 选中所有复选框

问题描述 在程序中尝试选中所有复选框&#xff0c;但出现错误。如果单击顶部的完整选中/释放复选框&#xff0c;同时选中包含复选框的列&#xff0c;则选定区域不会改变。该如何解决&#xff1f; 上面的图片是点击完整版本之后的。 下面是本文的测试代码&#xff0c;函数 dat…

AB Download Manager v1.5.8 开源免费下载工具

下载文件是我们日常工作和生活中经常进行的操作。面对动辄数十GB的4K影片、设计素材包或开发工具&#xff0c;传统浏览器的单线程下载如同"涓涓细流"&#xff0c;非常影响我们的效率和体验。 那么&#xff0c;一款高效且易用的下载工具至关重要。今天就让我们解锁这…

深度剖析:Dify+Sanic+Vue+ECharts 搭建 Text2SQL 项目 sanic-web 的 Debug 实战

目录 项目背景介绍sanic-web Dify\_service handle\_think\_tag报错NoneType问题描述debug Dify调用不成功&#xff0c;一直转圈圈问题描述debug 前端markdown格式只显示前5页问题描述debug1. 修改代码2.重新构建1.1.3镜像3.更新sanic-web/docker/docker-compose.yaml4. 重新部…

学习51单片机02

吐血了&#xff0c;板子今天才到&#xff0c;下午才刚开始学的&#xff0c;生气了&#xff0c;害我笔记都断更了一天。。。。 紧接上文...... 如何将HEX程序烧写到程序? Tips&#xff1a;HEX 文件是一种常用于单片机等嵌入式系统的文件格式&#xff0c;它包含了程序的机器码…

麒麟服务器操作系统安装 MySQL 8 实战指南

往期好文连接&#xff1a;统信UOS/麒麟KYLINOS安装JDBC驱动包 Hello&#xff0c;大家好啊&#xff0c;今天给大家带来一篇麒麟服务器操作系统上安装 MySQL 8 的文章&#xff0c;欢迎大家分享点赞&#xff0c;点个在看和关注吧&#xff01;MySQL 作为主流开源数据库之一&#x…

AWS EC2 微服务 金丝雀发布(Canary Release)方案

为什么需要实现金丝雀发布? 在当前项目的工程实践中, 已经有了充分的单元测试, 预发布环境测试, 但是还是会在线上环境出现非预期的情况, 导致线上事故, 因此, 为了提升服务质量, 需要线上能够有一个预验证的机制. 如何实现金丝雀发布? 使用AWS code deploy方案 AWS code…

支持蓝牙5.0和2.4G私有协议芯片-PHY6222

PHY6222QC-W04C 是一款适用于蓝牙低功耗&#xff08;BLE&#xff09;5.2 应用的片上系统&#xff08;SoC&#xff09;。它搭载 ARM Cortex™-M0 32 位处理器&#xff0c;配备 64KB SRAM、512K Flash、96KB ROM、256 bit efuse &#xff0c;以及超低功耗、高性能的多模式射频模块…

图像锐化调整

一、背景介绍 之前找多尺度做对比度增强时候&#xff0c;发现了一些锐化相关算法&#xff0c;正好本来也要整理锐化&#xff0c;这里就直接顺手对之前做过的锐化大概整理了下&#xff0c;方便后续用的时候直接抓了。 这里整理的锐化主要是两块&#xff1a;一个是参考论文&#…

找客户的app

找客户的 app 在竞争激烈的商业环境中&#xff0c;找客户的 APP 成为企业拓展业务的利器。 微拓客 APP&#xff0c;集智能获客、营销素材、客户管理于一体。支持关键词、附近客源等多方式采集&#xff0c;覆盖 300 行业&#xff1b;一键采集客源&#xff0c;一键导出到通讯录…

​​金融合规革命:​​R²AIN SUITE 如何重塑银行业务智能​

一、市场发展背景与核心驱动因素​ 信息过载​&#xff1a;单家银行年均新增监管文件大量增加&#xff0c;人工解读效率极低。 客户体验升级​&#xff1a;高净值客户期待“724小时专业级响应”&#xff0c;但客户经理难以实时掌握数百款产品动态。 风险防控​&#xff1a;传…