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