重学数据结构:静态链表的各种操作(C语言)

TC387 MCMCAN Message RAM配置详解:Tx Buffer与Rx FIFO地址布局 在嵌入式CAN/CAN FD通信系统中,缓冲区和FIFO是数据收发的核心机制,而AURIX TC3xx系列单片机将这一机制集成在了MCMCAN模块专用的Message RAM中。这是一块由CAN控制器独占的内存区域,开发人员需要按照寄存器规范手动划分Tx Buffer、Rx FIFO、过滤元素等子区间。合理的RAM布局能确保不同功能区域互不重叠、有序排列,避免数据覆盖与错帧。通过掌握TXBC、RXF0C等配置寄存器的字段含义,结合实用的地址布局表,可以显著降低多节点CAN通信的调试成本。本内容面向使用TC3 阅读详情

静态链表定义

#include <stdio.h>
#include <string.h>

#define maxSize 50

typedef struct
{
    int index;
    int data;
}StaticLink[maxSize];

初始化链表

void InitStaticLink(StaticLink L)
{
    L[0].index=-1;
    for (int i=1; i<maxSize; i++) {
        L[i].index=-2;
    }
    L[0].index=5;
    L[1].data=8;
    L[1].index=7;
    L[3].data=2;
    L[3].index=-1;
    L[5].data=3;
    L[5].index=1;
    L[7].data=4;
    L[7].index=3;
}

打印链表

void PrintStaticLink(StaticLink L)
{
    int index=0;
    char path[20]="0";
    char value_path[20]="0";
    while(L[index].index!=-1)
    {
        index=L[index].index;
        char dest[10],value_dest[10];
        sprintf(dest,"%s%d","->",index);
        sprintf(value_dest,"%s%d","->",L[index].data);
        strcat(path,dest);
        strcat(value_path,value_dest);
    }
    printf("index:%s\n",path);
    printf("value:%s\n",value_path);
}

根据序号获取对应的值

int GetSLElem(StaticLink L,int i)
{
    int j=0;
    int index=0;
    while(L[index].index!=-1&&j<i-1)
    {
        index=L[index].index;
        j++;
    }
    return L[index].data;
    
}

在对应序号节点后增加节点

void InsertSLNextNode(StaticLink L,int i,int e)
{
    if(L==NULL)return;
    if(i<=0||i>maxSize)return;
    int index=0;
    for (int j=1; j<maxSize; j++) {
        if(L[j].index==-2)
        {
            index=j;
            break;
        }
    }
    L[index].data=e;
    L[index].index=L[i].index;
    L[i].index=index;
}

在对应序号节点后删除节点

int  DeleteSLNextNode(StaticLink L,int i)
{
    if(L==NULL)return -2;
    if(i<=0||i>maxSize)return -2;
    
    int j=0;
    int preindex=0;
    while(L[preindex].index!=i)
    {
        preindex=L[preindex].index;
        j++;
    }
    L[preindex].index=L[i].index;
    int data=L[i].data;
    L[i].index=-2;
    
    return data;
}

测试

int main(int argc, const char * argv[]) {
    
    StaticLink L;
    InitStaticLink(L);
    PrintStaticLink(L);

    int target=GetSLElem(L,3);
    printf("GetSLElem(L,3)=%d\n",target);
  
    InsertSLNextNode(L,1,6);
    printf("InsertSLNextNode(L,1,6)\n");
    PrintStaticLink(L);
    
    
    int deleted_data=DeleteSLNextNode(L,7);
    printf("DeleteSLNextNode(L,7)=%d\n",deleted_data);
    PrintStaticLink(L);
    return 0;
}

输出结果

index:0->5->1->7->3
value:0->3->8->4->2
GetSLElem(L,3)=8
InsertSLNextNode(L,1,6)
index:0->5->1->2->7->3
value:0->3->8->6->4->2
DeleteSLNextNode(L,7)=4
index:0->5->1->2->3
value:0->3->8->6->2
Program ended with exit code: 0

面向 OData V4 的 Fiori elements 为何强制使用 draft、它到底是什么、以及是否能关闭 本文深入解析了SAP Fiori elements中draft handling的核心机制与必要性。关键点包括:1)draft机制通过中间版本实现复杂编辑的安全恢复与并发控制;2)Fiori elements for OData V4强制要求draft-enabled服务支持事务编辑;3)非draft服务仅适用于只读场景;4)替代方案需承担完全自定义开发的成本。文章基于SAP官方文档,系统阐述了draft在事务型应用中的基础性作用,为架构决策提供了明确指导。 阅读详情

相关推荐

Axure RP9 利用中继器实现列表数据的切换,分页器数据的动态交互加载

Axure RP9 利用中继器制作分页组件 在原型制作中,如何实现分页数据的动态加载、分页与数据的交互,每页显示条数的设定。下面通过制作五年级一班成绩单分页列表,分享给大家,适合有一定axure使用基础的人员,如有更好的方案,请多多指教。 最终效果图: 步骤1:首先利用中继器画出成绩单列表,并绑定成绩单数据。 步骤2:画出每页显示条数控制下拉框,利用中继器画出分页组件 步骤3:新增全局标量maxpage(显示的最多页码),minpage(显示的最小页码),i(循环计数),j(最循环数),selectpa

shandongmike的博客 6819

数据结构(2-2)--静态链表的基本操作

文章目录前言问题分析程序实现存储结构操作方法代码汇总main.hmethods.hmethods.cppmain.cpp重中之重 前言 博主最近时间紧张,所以最近的博客只贴整理好后的代码,部分方法会有代码注释,也尽量保证编码规范,有问题欢迎留言! 问题分析 赶时间“MAXSIZE”写成了“MAIXSIZE”,就说怎么怪怪的 程序实现 存储结构 typedef struct { Elem...

合衬绅士的博客 539

HyperLedger Fabric实战(一):基础环境构建

简介 本文将介绍从一台裸机上面如何构建出一个可用的Fabric网络(单机版,非测试网络)。 基础环境构建 Fabric组件安装

yindarui 1万+

数据结构_静态链表(C语言)

目录一、静态链表图文解析二、静态链表代码解析1、基本操作1.1 结构1.2 初始化1.3 插入数据1.4 删除数据1.5 修改数据2、源代码及测试2.1 源代码2.2 测试结果 一、静态链表图文解析 二、静态链表代码解析 1、基本操作 1.1 结构 1.2 初始化 1.3 插入数据 1.4 删除数据 1.5 修改数据 2、源代码及测试 2.1 源代码 2.2 测试结果 ...

小黯 3897

java对接海康实现页面实时播放和回放

前言:之前已经写过一篇关于视频的文章,因为觉得有很多优化的地方,也谢谢同行们加我微信跟我提了一些需求和意见,所以在过年的假期重新写了一个比较能扩张的版本。 上一个版本的连接:https://blog.youkuaiyun.com/weixin_45848110/article/details/119363602 与之前的版本不同之处: 1.不需要安装ffmpeg 2.不需要安装nginx 3.直接运行jar即可 4.之前是完全脱离海康sdk,回放的录像是保存到本地服务,现在是直接在海康硬盘录像机获取录像回放 5.实时播

weixin_45848110的博客 1万+

金蝶云星空初级实施认证考题

Q4.[单选题] (1.5分) 总账中的多账簿账表主要是基于什么进行查看的Q47.[多选题] (2.5分) 销售订单的收款计划页签勾选预收之后,预收控制环节可以控制哪些节点?

m0_51994557的博客 3122

【C语言】建立静态链 并 输出链表

建立一个简单链表,它由3个学生数据的节点组成,要求输出各节点的数据。//静态链表 #include<stdio.h> #include<windows.h> #include<string.h>struct Student { int num; float score; struct Student*next; };int main() { struct Studen

Steve_Abelieve 2812

人工智能,不止于模型:四步实现完整工作流

工程师越来越多地致力于将人工智能 (AI) 集成到自己的项目和应用中,同时不断着力提升自己的 AI 技能。面对 AI 问题,工程师首先要了解什么是 AI,以及如何将它纳入当前工作流,这看似简单,实则未必容易。在 Google 中搜索“什么是 AI?”会得到数百万条结果,包括不同程度的技术和相关信息。那么,对工程师而言,AI 意味着什么?人们对 AI 的关注主要集中在 AI 模型上,受此影响,工程师会迅速投入 AI 建模的研究。

r1832644594的博客 2818

静态链表详解及代码实现

所谓静态链表,就是用数组来实现链式存储结构,目的是方便在不设指针类型的高级程序设计语言中使用链式结构。 优点:和动态链表一样,删除和插入元素时间复杂度低 不足:和数组一样,需要提前分配一块较大的空间、 实现原理: 1、使用结构体数组,结构体有指针域  cur  和数据域  data 2、一个数组分量表示一个节点,用cur代替指针指示节点在数组中的相对位置 3、数组逻辑上分为两个链表:备...

我还是渣渣的博客 1万+

微机原理-基于8086电压报警2.5V仿真系统设计

*单片机设计介绍,微机原理-基于8086电压报警2.5V仿真系统设计。

2201_75940997的博客 1083

别再用图片水印了!5种你可能不知道的文本隐写术实战

本文介绍了5种高效的文本隐写术,帮助创作者在不影响内容可读性的情况下嵌入版权信息。从零宽度字符到同形字替换,再到标点符号变形和行尾空格编码,这些技术为数字内容提供了轻量级版权保护方案,特别适用于社交媒体和电子合同等场景。

k8l9m0n的博客 225

数据结构之链表(C语言实现)

单链表,双向链表,循环链表(全代码)

qq_51513787的博客 1629

基于 Simulink 的双向 DC/AC 逆变器中 IGBT/MOSFET 寄生参数影响分析实战教程

摘要:本教程详细解析了Simulink中IGBT/MOSFET寄生参数对双向DC/AC逆变器的影响。通过对比理想模型与含寄生参数(如20nH内部电感、50nH回路电感)的仿真,揭示了电压尖峰、高频振荡等实际问题。建模步骤包括搭建基准电路、引入寄生参数、配置高精度求解器(步长10ns),并给出抑制措施:添加RC缓冲电路、调整驱动电阻。关键发现:寄生参数会显著增加开关损耗和EMI噪声,需通过参数扫描优化设计。教程还提供了代数环报错、仿真速度优化等实战技巧,帮助工程师从理想仿真过渡到高保真分析。

xiaoheshang_123的博客 68

重学数据结构之第三章-线性表

线性表:零个或多个数据元素的有限序列。 几个关键点:首先它是一个序列,元素之间是有顺序的,若存在多个元素,则第一个元素无前驱,最后一个元素无后继,其他每个元素有且只有一个前驱和后继。 前驱和后继后续文章中也会提到,就是指的前一个数据元素和后一个数据元素,只是简化了叫法。

James-Tom的博客 802

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

静态链表的插入操作

静态链表的插入操作 转载于:https://www.cnblogs.com/LoveFishC/archive/2012/11/13/3845809.html

weixin_33919941的博客 122

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

静态链表

静态链表 以前学习的各种链表都是由指针实现的,链表中结点的分配和回收(即释放)都是由系统提供的标准函数malloc和free动态实现的,故称之为动态链表。但是有的高级语言,如BASIC、FORTRAN等,没有提供”指针”这种数据类型,此时若想采用链表做存储结构,就必须使用”游标”来模拟指针,由程序员自己编写”分配结点”和”回收结点”的过程。     用游标实现链表,其方法是:定义一个较

wrw112358的专栏 635

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

静态链表--简单操作

以下是某同学的成绩,通过静态链表实现增加,删除,查询等功能 #include using namespace std; #define MAX 100 typedef struct SListNode { int data; //所存放的数据 int cur; //游标 !注意游标不同于下标 }StaticList[MAX]; void Init(StaticList

telelily的博客 526

算法与数据结构之静态链表

静态链表 结构体的一个成员存放数据,另一个成员(“游标”)存放下一个数的位置(下标),这称为静态链表。输出链表不是按数组的下标顺序输出的,而是由一个指定的位置开始根据游标依次输出的。 将所有空闲结点链接形成一个备用链表,数组下标为 0 的单元为备用链表的头结点(这时,链表的头结点就不能再是数组下标 为 0 的单元了,需要另外定义)。静态数组实际有 2 个链表,一个链表上链接的是线性表的结点,另一个...

谁D了我的BUG 379

静态链表 C实现

0:实现静态链表的方法 定义一个较大的结构数组作为备用结点空间(即存储池)。当申请结点时,每个结点应含有两个域:data域和cursor域。data域用来存放结点的数据信息,此时的cursor域不在是指针而是游标指示器,游标指示器指示其后继结点在结构数组中的相对位置(即数组下标)。 数组的第0个分量可以设计成表的头结点,头结点的next域指示了表中第一个结点的位置。表中当前最后一个结点的域

1万+

静态链表的介绍及实现

用数组描述的单链表叫做静态链表,它兼顾了顺序表和链表的优点于一身,可以看做是顺序表和链表的升级版。使用静态链表存储数据,数据全部存储在数组中(和顺序表一样),但存储位置是随机的,数据之间"一对一"的逻辑关系通过一个整形变量(称为"游标",和指针功能类似)维持(和链表类似)。

晴空๓ 1050

重学数据结构:三对角矩阵公式推导过程

文章目录三对角矩阵概念公式推导过程(下标为1的情况) 三对角矩阵概念 公式推导过程(下标为1的情况) k=2i+j-3推导过程: 当i=1时,只有两个元素。当i=2~i-1时,每一行都有三个元素。在最后的i行,有j-i+1个元素。 *k= 2+(i-1-2+1)3 + (j-i+1)= 2i+j-3 i=(k+1)/3+1,j=k-2i+3推导过程: i j k 1 1 0 1 2 1 2 1 2 2 2 3 2 3 4 3 2 5 3 3 6 3 4

啃梨的博客 1万+

重学数据结构:串的基本操作(C语言)

串的结构 赋值操作 StrAssign(&T,chars):赋值操作。把串T赋值为chars。 赋值操作 StrCopy(&T,S):复制操作。由串S复制得到串T。 StrEmpty(S):判空操作。若S为空串,则返回TRUE,否则返回FALSE。 StrLength(S):求串长。返回串S的元素个数。 ClearString(&S):清空操作。将S清为空串。 DestroyString(&S):销毁串。将串S销毁(回收存储空间)。 Concat(&T,S1,S2):

啃梨的博客 5288

重学数据结构:树的层序遍历(C语言)

文章目录树的层序遍历层序遍历代码测试代码测试结果其他用到的代码 树的层序遍历 顾名思义,就是一层一层的输出内容。要实现这个功能,需要用到我们之前学到的队列的相关操作。以二叉树为例,,根节点先输出,遍历所有节点,把当前节点的左右子节点也加入队列,若当前列队不为空,则输出队头节点,并获取对头节点的左右子节点加入队列,直到队列为空。 层序遍历代码 //层序遍历 bool LevelOrder(BiTree tree) { if(tree==NULL) return false; LinkQueue *

啃梨的博客 642

重学数据结构:树的定义、性质

文章目录树的定义树的性质节点数=度数+1度为m的树和m叉树的关系度为m的树第i层最多有mi-1个节点高度为h的m叉树最多的节点有(等差数列求和=m0+m1+m2+......+mh)高度为h的m叉树至少有h个节点高度为h且度为m的树至少有 树的定义 树的性质 节点数=度数+1 度为m的树和m叉树的关系 度为m的树 m叉树 定义 树的所有节点 相同点 不同点1 不同点2 度为m的树第i层最多有mi-1个节点 高度为h的m叉树最多的节点有(等差

啃梨的博客 627

重学数据结构:队列的链式实现的各种操作(C语言)

文章目录队列的链式定义队列的链式实现分类有头节点的链式队列链式队列初始化(有头节点)判断队空(有头节点)链式队列的创建(有头节点)打印链式队列(有头节点)入队(有头节点)出队(有头节点)获取队头元素(有头节点)无头节点的链式队列链式队列初始化(无头节点)链式队列的创建(无头节点)打印链式队列(无头节点)入队(无头节点)出队(无头节点)获取队头元素(无头节点) 队列的链式定义 队列的链式实现分类 分为有头节点和无头节点 有头节点的链式队列 链式队列初始化(有头节点) 判断队空(有头节点) 链式队列的创建(有头

啃梨的博客 586

重学数据结构:栈的应用-逆波兰表达式(C语言)

表达式求值 波兰表示法(Polish notation,或波兰记法),是一种逻辑、算术和代数表示方法,其特点是操作符置于操作数的前面,因此也称做前缀表示法。如果操作符的元数(arity)是固定的,则语法上不需要括号仍然能被无歧义地解析。波兰记法是波兰数学家扬·武卡谢维奇1920年代引入的,用于简化命题逻辑。 “ 扬·武卡谢维奇本人提到:我在1924年突然有了一个无需括号的表达方法,我在文章第一次使用了这种表示法。 ” —— Łukasiewicz(1), p. 610, footnote. 阿隆佐·邱

啃梨的博客 515
上一篇: 重学数据结构:循环链表的各种操作(C语言)
下一篇: 重学数据结构:顺序栈的各种操作(C语言)
Ken_Li_Lsq
博客等级 码龄14年 22粉丝 61原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值