数据结构
沉默的小宇宙
这个作者很懒,什么都没留下…
展开
-
嵌入式不定长的任务消息传递组件的实现
嵌入式不定长的任务消息传递组件的实现原创 2023-02-24 14:40:38 · 340 阅读 · 1 评论 -
【数据结构】二叉搜索树复习及创建、求高度代码实现
二叉搜索树(Binary Search Tree)的一些关键特点:1)根节点 > 左孩子2)根节点 < 右孩子3)中序遍历是一个递增排序的数据4)所有数据不能重复typedef struct node{ int data; struct node *left; struct node *right;}NODE_T,*PNODE_T;typedef struct{ PNODE_T root;}TREE_T,*PTREE_T;/*先序遍历:根->原创 2021-11-07 18:30:35 · 178 阅读 · 0 评论 -
【数据结构】关于二叉树的先序遍历、中序遍历及后续遍历复习笔记
树的概念就不多说了,直接上最简单的代码,关键的一点需要复习下【递归】的概念。typedef struct node{ int data; struct node *left; struct node *right;}NODE_T,*PNODE_T;/*先序遍历:根->左->右*/void preorder(PNODE_T pNode){ if(NULL != pNode) { printf(" %d",pNode->data); preorder(pN原创 2021-11-07 17:44:37 · 201 阅读 · 0 评论 -
【单片机笔记】关于MCU芯片大端模式和小端模式的问题
晚上写程序总是不对,于是检查了下内存,写了段代码,一测发现猫腻,芯片为STM32F0 cortexM0系列的测试代码如下:void test(void){ u32 uiData = 0x11223344; u8 *p = (u8 *)&uiData; printf("\n\n\n"); printf("[0x%08X] D3[0x%02X] D3[0x%02X] D3[0x%02X] D3[0x%02X]\n" ,uiData ,BYTE3(uiData) ,BYTE2原创 2021-08-14 01:05:09 · 895 阅读 · 0 评论 -
【单片机笔记】ASCII与HEX数组互转的C语言实现
最近项目要用到这个功能,于是花了点时间自己写了一套,个人感觉比较好用,分享出来:/** @fn u16 hex_to_str(u8 *pAscii,u8 *pHex,u16 unStrLen) * @brief hex数组转字符串 * @param pAscii:字符串 * @param pHex:数组 * @param unHexLen:数组长度 * @return 转换结果 0:失败,其他:字符串长度 * @note 转换后的字符串字符全部大写 */u16 hex_to_str(原创 2021-06-09 21:49:26 · 3325 阅读 · 4 评论 -
【数据结构学习】非常适合嵌入式的环形队列,支持单字节、不定长度写入和读取
此代码方便用于各外设模块数据量大且高速通信的环境,可以保证接收和发送的异步和数据完整性。#include <stdio.h>typedef signed char s8;typedef signed short s16;typedef signed int s32;typedef unsigned char u8;typedef unsigned short u16;typedef unsigned int u32;typedef unsigned char Da原创 2021-04-14 15:15:25 · 486 阅读 · 2 评论 -
【数据结构学习】双向循环链表的插入、删除、查找、遍历、释放操作的C语言实现
插入测试:查找元素删除元素原创 2021-02-04 17:52:54 · 1177 阅读 · 0 评论 -
【数据结构学习】双向链表的增、删、查、遍历、释放操作的C语言实现
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。单向链表和双向链表优缺点:双向链表:增加删除节点复杂,需要多分配一个指针存储空间。双向链表:从双向链表中的任意一个结点开始,都可以很方便地访问前驱结点和后继结点。单向链表:结点的删除非常方便,不需要像线性结构那样移动剩下的数据,但是平均的访问效率低于线性表。单向链表:单个结点创建非常方便,普通的线性内存通常在创建原创 2021-02-04 17:52:26 · 916 阅读 · 0 评论 -
【数据结构学习】单向循环链表的创建,指定位置插入、查找、删除及释放
循环列表同单向链表唯一的区别是链表的最后一个结点中的指针域不再为NULL,而是指向头结点,如下图所示:所以在单向的程序判定的条件上需要做些改动头文件#ifndef __FY_CIRCULARLIST_H#define __FY_CIRCULARLIST_Htypedef int data_t;struct node{ data_t data; struct node* next;};//创建一个结点struct node * creatNode(data_t dat原创 2021-02-04 00:22:52 · 1627 阅读 · 0 评论 -
【数据结构学习】单链表的指定位置元素删除、链表的释放
删除指定节点//删除某个结点int list_delete(linklist H,int pos){ if(H==NULL){ printf("删除结点失败,链表为空!\n"); return -1; } //获取要删除结点的上一个结点(前驱) listnode *lastnode = list_get(H,pos-1); //当没有前驱,或者该节点不存在的情况下 if(lastnode == NULL || lastnode原创 2021-02-03 00:27:49 · 6233 阅读 · 1 评论 -
【数据结构学习】单链表的创建、尾插元素、指定位置插入元素、获取指定位置元素
单链表链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。“结点的序列”表示线性表称作线性链表(单链表),单链表是链式存取的结构。链接存储方法链接方式存储的线性表简称为链表(Linked List)。链表的具体存储表示为:① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示原创 2021-02-02 23:04:06 · 3748 阅读 · 1 评论 -
【数据结构学习】关于VC++6.0中注释快捷键添加方法
再创建编程项目没有硬件运行程序算法的时候需要借助电脑本身创建项目并进行运行测试,可以测试的软件有非常的多,常见的有VScode,VSx等等,为简单化,我这里使用的是VC++6.0,窗口简介,代码清晰,单是里面的注释快捷键没有。在网上找了下资料,并整理了下。下面说记录下具体方法:1、确保正确安装VC++6.0软件这个就不细说了,要是碰到什么win8 win10不兼容问题这个也非常好解决。2、安装好后,找到软件的安装目录,进入到Common\MSDev98\Macros目录下。3、在该目录下原创 2021-02-02 20:23:51 · 1218 阅读 · 0 评论 -
【数据结构学习】链式队列的C语言实现
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in ...原创 2021-02-01 12:10:16 · 324 阅读 · 0 评论 -
【数据结构学习】链式栈的C语言实现
几个概念:1、链式数据结构计算机中的存储数据结构主要分为连续存储结构和不连续存储结构,其中连续存储结构也称为线性表,不连续存储结构也称为链式表。链式结构简单的说就是不连续内存的数组。2、栈栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。栈是允许在同一端进行插入和删除操作的特原创 2021-01-31 20:40:48 · 286 阅读 · 1 评论