数据结构与算法
文章平均质量分 70
460833359
这个作者很懒,什么都没留下…
展开
-
一个循环队列实现
队列handlertypedef struct {Uint32 curRd;Uint32 curWr;Uint32 len;Uint32 count;Int32 *queue;pthread_mutex_t lock;pthread_cond_tcondRd;pthread_cond_tcondWr;...转载 2021-09-26 15:38:23 · 241 阅读 · 0 评论 -
循环缓冲区(循环buffer)的原理及实现
循环buffer的实现方式多种多样,我这里主要讲一种基于数组的循环buffer实现方式。循环buffer原理如上图,在数据写满整个数组后将数据放入最开始再次写入。需要保证读指针小于等于写指针。话不多说,直接上代码:ringbuffer.h1#ifndef RING_BUFFER_H_#define RING_BUFFER_H_#include <cstring>#include <cstdio>#define BUFFER_SIZE 1024*1024type转载 2021-05-28 15:49:03 · 1392 阅读 · 0 评论 -
C语言创建循环缓冲区(环形缓冲区)-- Circular Buffer(Ring Buffer)
由于嵌入式系统的资源有限性,循环缓冲区数据结构体(Circular Buffer Data Structures)被大量的使用。循环缓冲区(也称为环形缓冲区)是固定大小的缓冲区,工作原理就像内存是连续的且可循环的一样。在生成和使用内存时,不需将原来的数据全部重新清理掉,只要调整head/tail 指针即可。当添加数据时,head 指针前进。当使用数据时,tail指针向前移动。当到达缓冲区的尾部时,指针又回到缓冲区的起始位置。目录:为什么使用循环缓冲区 C 实例使用封装 API设计 确认.转载 2021-05-28 15:45:46 · 3684 阅读 · 0 评论 -
二叉树的遍历
树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的 i -1次方个结点;转载 2015-07-21 21:17:11 · 380 阅读 · 0 评论 -
KMP算法
KMP算法 在介绍KMP算法之前,先介绍一下BF算法。一.BF算法 BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去,直到得出最后的匹配结果。 举例说明: S: ababcababa转载 2015-08-28 23:10:58 · 248 阅读 · 0 评论 -
递归算法详细分析-> C
C通过运行时堆栈支持递归函数的实现。递归函数就是直接或间接调用自身的函数。 许多教科书都把计算机阶乘和菲波那契数列用来说明递归,非常不幸我们可爱的著名的老潭老师的《C语言程序设计》一书中就是从阶乘的计算开始的函数递归。导致读过这本经书的同学们,看到阶乘计算第一个想法就是递归。但是在阶乘的计算里,递归并没有提供任何优越之处。在菲波那契数列中,它的效率更是低的非常恐怖。 这里有转载 2015-09-13 15:39:48 · 364 阅读 · 0 评论 -
证明:素数对中间的数能被6整除
中间只隔一个数字的两个素数被称为素数对,比如5和7,17和19, 证明素数对之间的数字总能被6整除(假设这两个素数都大于6)。下面的证明来自网上。 证明: 1,中间只隔一个数字的两个素数,它们都不能被2整除。所以中间隔的那个数一定可以被2整除, 因为每过一个奇数接下来都是一个偶数。 2,这两个素数都不能被3整除,而且,第一个素数的前一转载 2015-12-16 19:53:07 · 5715 阅读 · 4 评论