嵌入式3-15

1、整理思维导图
2、整理课上单向循环链表的代码
3、完成双向链表的剩下四个功能

2、

node_p create_list()//创建链表
{
    node_p p=(node_p)malloc(sizeof(node));
    if(p==NULL)
    {
        printf("申请失败\n");
        return NULL;
    }
    p->len=0;
    p->next=p;
    return p;
}
node_p create_node(datatype data)//申请结点
{
    node_p p=(node_p)malloc(sizeof(node));
    if(p==NULL)
    {
        printf("申请失败\n");
        return NULL;
    }
    p->data=data;
    return p;
}
int empty_list(node_p p)//判空
{
    if(p==NULL)
        return -1;
    return p->len==0;
}
void insert_head(node_p p,datatype data)//头插
{
    if(p==NULL)
        return;
    node_p q=create_node(data);
    p->next=q;
    p->len++;
}
void dele_head(node_p p,datatype data)//头删
{
    if(p==NULL||empty_list(p))
        return;
    node_p q=p->next;
    p->next=q->next;
    free(q);
    q=NULL;
    p->len--;
}
void insert_tail(node_p p,datatype data)//尾插
{
    if(p==NULL)
        return;
    node_p q=p;
    while(p->next!=q)
    {
        p=p->next;
    }
    p->next=create_node(data);
    q->len++;
}
void dele_tail(node_p p)//尾删
{
    if(p==NULL||empty_list(p))
        return;
    node_p q=p;
    while(p->next->next!=q)
    {
        p=p->next;
    }
    free(p->next);
    p->next=q;
    q->len--;
}
void insert_pos(node_p p,datatype data,int pos)//按位置插入
{
    if(p==NULL||pos<0||pos>p->len-1)
        return;
    node_p q=p;
    for(int i=0;i<pos;i++)
    {
        p=p->next;
    }
    node_p r=p->next;
    p->next=create_node(data);
    p->next->next=r;
    q->len++;
}
void dele_pos(node_p p,int pos)//按位置删除
{
    if(p==NULL||empty_list(p)||pos<0||pos>p->len-1)
        return;
    node_p q=p;
    node_p r=p->next->next;
    for(int i=0;i<pos;i++)
    {
        p=p->next;
    }
    free(p->next);
    p->next=r;
    q->len--;
}
void show_list(node_p p)//输出
{
    if(p==NULL||empty_list(p))
        return;
    node_p q=p;
    p=p->next;
    while(p->next!=q)
    {
        printf("%d->",p->data);
        p=p->next;
    }
}
node_p DeleHead(node_p p)//删除头结点
{
    if(p==NULL)
        return NULL;
    node_p q=p;
    while(p->next!=q)
    {
        p=p->next;
    }
    p->next=q->next;
    free(q);
    q=NULL;
    return p->next;
}
void show_nohead_list(node_p p)//输出无头结点的链表
{
    node_p q=p;
    do{
         printf("%d->",p->data);
         p=p->next;
    }while(p!=q);
}

3、

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

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

相关文章

React18 后台管理模板项目:现代、高效与灵活

&#x1f389; 给大家推荐一款React18TypescriptVitezustandAntdunocss且超级好用的中后台管理框架 项目地址 码云&#xff1a;https://gitee.com/nideweixiaonuannuande/xt-admin-react18github&#xff1a;https://github.com/1245488569/xt-admin-react18 演示地址 http…

Golang中map数据结构字段解析

Golang里map底层数据结构具体如下图所示&#xff1a; map其实就是一个指向 hmap 的指针&#xff0c;占用了8个字节 hmap各自段存放的字段意义如下&#xff1a; 字段含义countmap中元素的个数&#xff0c;对应len (map)的值flags状态标志位&#xff0c;标记map的一些状态B桶数…

【C++语言】冲突-C语言:命名空间

文章目录 前言1.命名空间&#xff1a;namespace关键字1.命名空间中可以定义变量、函数、类型2.命名空间可以嵌套3.相同命名空间共存 2 命名空间的使用方式&#xff1a;1.名称加用域作用限定符的方式访问&#xff08;同上&#xff09;2.使用using引入某个空间中的某个变量3.使用…

数据链路层_以太网

IP协议确定数据跨网络从主机A到主机B的路径&#xff0c;即IP协议解决了路径选择问题&#xff0c;但在这之前&#xff0c;必须先解决数据在一个子网内的传输的问题。跨网络的本质就是跨多个子网&#xff0c;只要一个子网内可以通信&#xff0c;那么便可以跨网络通信。 一.以太…

【算法杂货铺】二分算法

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 朴素二分查找 &#x1f4c2; 朴素二分模板 &#x1f4c1; 查找区间端点处 细节&#xff08;重要&#xff09; &#x1f4c2; 区间左端点处模板 &#x1f4c2; 区间右端点处模板 &#x1f4c1; 习题 1. 35. 搜索插入位…

Spring Cloud Gateway针对指定接口做响应超时时间限制

背景&#xff1a;我做的这个服务中存在要对大数据量做自定义统计的接口和大文件上传接口&#xff0c;接口响应用时会超过gateWay配置的全局用时&#xff0c;如果调整网关全局的超时时间和服务的全局超时时间是不合理的&#xff0c;故此想能否单独针对某个接口进行细粒度超时限制…

CXL-Enabled Enhanced Memory Functions——论文阅读

IEEE Micro 2023 Paper CXL论文阅读笔记整理 问题 计算快速链路&#xff08;CXL&#xff09;协议是系统社区的一个重要里程碑。CXL提供了标准化的缓存一致性内存协议&#xff0c;可用于将设备和内存连接到系统&#xff0c;同时保持与主机处理器的内存一致性。CXL使加速器&…

【Hadoop】Hadoop概述与核心组件

目录 Hadoop概述Hadoop 发展历史Hadoop 三大发行版本1.Apache Hadoop&#xff08;常用&#xff09;2.Cloudera Hadoop3.Hortonworks Hadoop优势优势总结——4高&#xff08;高可靠、高扩展、高效、高容错&#xff09; Hadoop组成1.HDFS管理者&#xff1a;NameNode&#xff08;n…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:GridItem)

网格容器中单项内容容器。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。仅支持作为Grid组件的子组件使用。 子组件 可以包含单个子组件。 接口 GridItem GridItem(value?: GridItemOptions)…

分布式系统常见负载均衡实现模式

分布式系统常见负载均衡实现模式 1. 4层负载均衡1.1. 负载均衡的常见需求1.2. 负载均衡的实现模式1.2.1 DR模式1.2.2 TUN模式1.2.3 NAT模式1.2.4 FULLNAT模式1.2.5 4种模式的差异 1.3. 负载均衡的均衡算法1.3.1 静态负载均衡1.3.2 轮询法1.3.3 加权循环法1.3.4 IP 哈希法1.3.5 …

FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+OSD动态字符叠加,提供1套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收发送本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收HLS图像缩放HLS多路视频拼接应用本方案的SDI接收HLS多路视频融合叠加应用本方案的S…

C++提高笔记(四)---STL容器(stack、queue、list)

1、stack容器&#xff08;栈&#xff09; 1.1 栈stack基本概念 概念&#xff1a;stack是一种先进后出&#xff08;First In Last Out&#xff0c;FILO&#xff09;的数据结构&#xff0c;它只有一个出口 栈中只有顶端的元素才可以被外界调用&#xff0c;因此栈不允许有遍历行…