
C语言
all of the time
一名嵌入式软件工程师,熟悉51系列、stm32系列、MSP430系列以及Linux底层驱动和上层应用。代码不重要,重要的是代码背后的思维,别人无可复制!共勉。
展开
-
数据结构04----C语言队列
前面三次的链接如下: 数据结构01----单链表 数据结构02----双链表 数据结构03----栈 本篇来说一下数据结构中的队列。 五、队列 队列是是一种先进先出(FIFO)的线性表,只允许在一端进行插入(入队)操作,在另一端进行删除(出队)操作。 队列中,允许入队操作的一端叫做队尾,允许出队操作的一端叫做队头。 和之前的栈一样,C语言实现分两种讲解:链队列和顺序队列。 1.链队列 在链表的基础上,按照先进先出的原则操作数据。 C语言编程思路: ①结点定义; ②链表初始化; 定义头结点,赋值给头指针原创 2020-08-24 17:28:29 · 327 阅读 · 0 评论 -
数据结构02----C语言双向链表
接着上一次的单向链表,今天说一下双向链表 给个传送门: 单向链表 3.双向不循环链表 双向不循环链表模型如下: 和单向链表一样,双向链表的一个节点也是由数据域和指针域组成,只不过,双向链表的指针域有两个指针,一个指针prev指向上一个节点(prev保存的上一个节点的地址),一个指针next指向下一个节点(next保存的是下一个节点的地址)。其他概念和之前的一样。 对双向链表的操作,也是增删改查,我们直接看程序: #include <stdio.h> #include <stdlib.h&原创 2020-08-20 22:54:49 · 299 阅读 · 0 评论 -
数据结构03----C语言栈
前面已经介绍了链表: 数据结构01----C语言单向链表 数据结构02----C原因双向链表 今天我们来看下数据结构中的栈的介绍和C语言的实现。 四、栈 1.简介 栈是限定只在表头进行插入(入栈或者压栈)与删除(出栈或者弹栈)操作的线性表,这里的表头称为栈顶,表尾称为栈底。其中,出栈的第一个元素称为栈顶元素,出栈的最后一个元素称为栈底元素。由此可见,栈 是一种 后进先出 的数据存储结构。如下图: 其中1/2/3/4表示入栈的顺序。 1.链栈 栈的C语言实现,我们这里分两种介绍,一种是链栈,一种是顺序原创 2020-08-24 12:55:32 · 195 阅读 · 0 评论 -
冒泡排序和选择排序
#include <stdio.h> #include <stdlib.h> #define BUBBLE 1 /* 冒泡 */ #define SELECT 2 /* 选择 */ #define ASCENDING 1 /* 升序 */ #define DESCENDING 2 /* 降序 */ /* *冒泡排序和选择排序 * 参数:str:要排序的数组 str_len:数组长度 select_sort:排序方式(冒泡还是选择排序) * 返原创 2020-08-13 08:54:51 · 174 阅读 · 0 评论 -
数组、链表、栈、队列、数组指针、指针数组、函数指针、指针函数、常量指针、指针常量
数组: 数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。 数组的优势,在于可以方便的遍历查找需要的数据。但是他对内存的要求比较严格,必须找到一段连续的内存才能存储。 链表: 链表在内存中不是连续存储的,所以可以充分利用内存中的碎片空间,这是区别于数组的地方。除此之外,链表还是很多算法的基础,最常见的哈希表就是基于链表来实现的。 (对应的例程在数据结构的day1-day5) 栈: 栈是一种特殊的线性表,仅限在表尾进行插入和删除。在这种特殊的线性表中,把数据的插入叫做“入栈”,把数据的删除叫做“原创 2020-07-29 10:00:03 · 1125 阅读 · 0 评论 -
数组与指针
来看看几个大头: 指针数组 我们来看看他的定义: int a[2]; 在上面的定义中,需要注意的是:[]的运算优先级比高,a是一个数组,类型为int (*)[2],数组里面存放的是两个指向int类型数据的指针,或者说,里面的两个元素是两个指针,这两个指针指向两个int元素的数据;看下面的例子: 配合注释我们可以看到,的确如此。 数组指针 同样的,我们来看看他的定义: int (*a)[2]; 和我们所知的一样,()的优先级最高,首先a是一个指针,指向大小为2的数组,因此这叫数组的指针,定义了一个指原创 2020-06-08 12:57:39 · 285 阅读 · 1 评论