学习笔记
肖恩•布莱恩特
这个作者很懒,什么都没留下…
展开
-
Linux-C学习笔记-双向循环链表(支持DEBUG调试)
/*************************************************************************** 文件名 : DbCircleList.c* 文件说明 :本文件是循环链表的实现函数,包括链表创建,删除,清空,获取链表长度,* 获取链表结点,删除链表结点,链表逆序操作,适用于任意类型的数据结点,*原创 2013-11-13 12:08:18 · 868 阅读 · 0 评论 -
C语言数组形双向链表的处理
指针形链表的试用已经非常方便,可以带参数结点,但在某些情况下,还会用到数组形链表,因此做以总结,具体如下:alist.h//// Created by helios on 2019/1/27.//#ifndef ALIST_H#define ALIST_H#include <stdint.h>#define LIST_NULL 0xFFFFtypede...原创 2019-01-27 21:07:54 · 765 阅读 · 0 评论 -
单线程轮训裸机OS程序
近日在学习STM32单片机操作系统之余,写了如下单线程轮训裸机OS程序,分享出来与大家共同进步,如有错误或不足之处,敬请谅解,尊听指导。此单线程轮训裸机OS具有一下特点:1.以系统滴答时钟为驱动持续工作;2.任务具有关闭、睡眠、执行、延时、等待共五种状态;3.任务ID及任务数需在系统运行前就确定;4.任务执行过程中可根据需要随时对任务进行关闭,打开,睡眠及唤醒操作;原创 2016-01-22 22:04:04 · 891 阅读 · 0 评论 -
蛋疼的C语音字符串拷贝 strncpyr
uint8_t *strncpyr(uint8_t *dest, const uint8_t *src, int8_t r, int32_t n){ int32_t pos = 0; for(pos = 0; ((src[pos] != '\0') && (src[pos] != r) && (pos < n)); pos++)...原创 2015-10-30 19:09:31 · 604 阅读 · 0 评论 -
又一个简单而强大的单片机内存管理器-不带内存碎片整理
与之前的单片机内存管理实现思路不同前者为将内存区域划分为固定大小的块,通过每个块的状态来分配内存,获取到的是连续的内存块,则相应的,内存也是连续的。此次新的内存管理是将整个待分配的内存块看作一个空闲内存描述结构加内存区域,申请一块内存是将空闲且大小合适的内存一分为二或整块获取来实现,释放内存是将当前内存与前后空闲内存合并完成的,有双向链表的意思。memory.h原创 2015-08-25 21:45:50 · 2508 阅读 · 0 评论 -
Linux-C学习笔记-循环链表
学完了单链表,循环链表当然得学习循环链表与单链表的区别就在于单链表最后一个节点的next指针指向NULL,而循环链表的最后一个节点的next指针指向第一个数据节点以下是循环链表的头文件、实现文件及测试文件,适用于任何类型的数据节点/******************************************************************************原创 2013-11-11 14:56:35 · 877 阅读 · 0 评论 -
Linux C学习笔记-排序算法1-插入排序
插入排序插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。基本思想有一个已经有序的数据序列,要求原创 2013-11-17 14:08:23 · 1276 阅读 · 0 评论 -
Linux C学习笔记-排序算法2-冒泡排序
冒泡排序冒泡排序(Bubble Sort,或称:泡沫排序、气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。基本概念冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一原创 2013-11-17 15:20:50 · 1351 阅读 · 0 评论 -
Linux C学习笔记-排序算法4-快速排序
快速排序设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第1个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。排序步骤一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j=N原创 2013-11-17 17:04:11 · 1164 阅读 · 0 评论 -
系统大小端模式存储示意图
原创 2013-11-10 12:20:47 · 1391 阅读 · 0 评论 -
Linux-C学习笔记--单链表的“浮云”操作
链表在C语言项目中很常见,学号链表,先从单链表开始,通常在学习阶段的单链表实现是基于某种数据类型或结构量身定做的操作方法,这种方法,没有通用性,在实际项目开发中,段不可取。于是乎,学习一种“浮云”般对单链表的操作是非常重要的。我们研究各个数据结点的数据,就会发现,无论它是什么类型,都有一个共同的特点,就是,他们都是存储在内存中的,它们拥有各子唯一的内存地址,于是乎,我们使用单链表的每个结点存储目标原创 2013-11-10 12:17:16 · 1736 阅读 · 0 评论 -
Linux-C学习笔记-一劳永逸的顺序表
C语言学习笔记之——一劳永逸的顺序表顺序表用来将同一类型的数据结点顺序存储于内存中,在学习阶段,通常是给一种数据类型创建一组顺序表操作函数,写多了就会发现,所有的顺序表操作基本上都相同,对于要在一个项目中写多组顺序表操作函数的做法,显然不可取,于是乎,学习了一种通用顺序表操作函数,采用顺序表存储数据节点地址的方式,建立顺序表,之后,对于各个结点的操作都用指针来操作,具体头文件及实现文件如下,下原创 2013-11-10 11:50:59 · 1249 阅读 · 2 评论 -
Linux C学习笔记-排序算法6-二路归并排序
归并排序基本思想:将两个或两个以上的有序序列合并成一个新的有序序列:这种归并方法称为2路归并。将3个有序序列归并为一个新的有序序列,成为3路归并;将多个有序序列归并为一个新的有序序列,成为多路归并。检测两个有序序列A和B,C为归并后的新的有序序列:当i和j都在两个序列内变化时,根据关键码的大小,较小的数据元素排放到新序列k所指位置中;当i和j中有一个已经超出原创 2013-11-24 15:28:01 · 1372 阅读 · 0 评论 -
Linux C学习笔记-排序算法3-选择排序
选择排序每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。算法步骤1 依次遍历数列的无序部分(第一次认为整个数列都为无序)2 找出最小(或最大)的一个元素3 将找出来的最小元素与无序数列第一个元素交换,使得无序数列的第一个元素也变成有序数列4 重复上述步骤,直到无序数列中剩下一个元素为止C语言示例原创 2013-11-17 16:09:36 · 1155 阅读 · 0 评论