![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
文章平均质量分 65
以数据结构和算法为基础_实现各种数据结构和算法的企业级应用
小生_无情
这个作者很懒,什么都没留下…
展开
-
两种高效的查找算法
目录:1:并行搜索2:二分查找二分查找的实现是建立在有序的数组之上的,只有有序的数组才能准确找到要查找元素在数组中的位置,所以在测试二分查找的正确性时要用有序的数组,并行搜索我们这做的是查找一个元素在数组中出现的次数,所以不用是一个有序的数组,这两种算法都很高效接下来就为大家介绍这两种算法。1:并行搜索,什么是并行顾名思义就是两个程序函数同时执行,在以往的算法中我们编写的函数在主函数中都是一个函数执行结束接着执行另外一个函数,而并行是在主函数中两个函数同时执行,那么怎么实现并行呢?这里就要引原创 2021-11-16 20:58:41 · 2127 阅读 · 0 评论 -
栈实现企业级应用
1:栈实现迷宫求解 2:栈实现表达式求解1:迷宫求解迷宫求解的具体需求就是:小人从迷宫的入口进入,遍历地图从而找到出口从出口走出地图从而走出迷宫。迷宫求解的实现:在这将用到一种算法名叫回溯算法,而我们将用现在学的数据结构栈实现回溯算法。回溯算法:对一个包括有很多个结点,每个结点有若干个搜索分支的问题,把原问题分解为若干个子问题求解的 算法;当搜索到某个结点发现无法再继续搜索下去时,就让搜索过程回溯(回退)到该节点的前一个结点,继续 搜索该节点外的其他尚未搜索的分支;如果发现该结点无法再搜索.原创 2021-09-15 15:20:43 · 88 阅读 · 0 评论 -
队列的三个企业级应用
用队列实现五个企业级应用,分别为循环队列,任务队列,优先队列,以及一个队列的应用案例(高并发服务器中队列的应用)。1:循环队列(1)循环队列和一般队列的实现有所不同,循环队列可以实现队列中的元素出对以后继续向队列中插入元素,而一般队列进行元素出队以后就不能实现元素的继续入队只能重启程序才能进行元素的入队。(2)循环队列实现的具体思路:怎样才能实现循环队列?实现循环队列我们只需要让指向队尾的back在进行元素入队时当入队到最后一个元素又能指向对头(因为每进行一次元素的入队back就往后移动一个位置原创 2021-09-07 08:49:42 · 183 阅读 · 0 评论 -
双向链表的实现
具体分析:双向链表和单链表形式差不多都是链式结构,但是双向链表可以正向访问链表也可以逆向访问链表,所以定义的双向链表结构体和单链表结构体相似,只不过双向链表结构体中多了一个指针域,该指针域用来保存上一个节点的地址。双向链表效果图:1:有了双向链表的基本概念双向链表的定义就不怎么难了//创建一个双向链表typedef struct twoWayLinkList { int date; struct twoWayLinkList* next; //指向下一个节点 struct tw原创 2021-08-07 19:53:32 · 177 阅读 · 0 评论 -
堆 数据结构的实现
什么是堆?堆有什么特性?堆是怎样实现的?1:堆不同于链表队列,因为链表队列是一种线性结构而堆是一种树状结构,堆有最大堆和最小堆两种。2:只有以下几种情况才符合最大堆的特性(1)每个父节点最多可以有两个子节点(2)根节点的值是所有堆节点中值的最大者,且每个父节点的值要比他子节点的值大(3)除了根节点没有兄弟节点,最后一个节点的左子节点可以没有兄弟节点,其他节点必须有兄弟节点如图:下图就不是最大堆:3:堆树状结构的实现我们可以将堆中节点的值保存在数组中,这样就可以..原创 2021-09-09 13:39:10 · 183 阅读 · 0 评论 -
队列 数据结构的实现
队列 实现的具体思路有两种:1:第一种队列数据结构的实现,相信学过顺序表的同学对队列数据结构的实现也很容易理解,因为第一种实现方法和顺序表实现方法具体思路差不多,都是运用了数组的思想方法来实现的,但是不同的是队列的元素插入不能在随意位置插入,因为队列遵循的是(先进先出的原则)。队列效果图的实现:(1)跟据上图队列实现的效果图我们因该想到先定义一个结构体,结构体中的成员有指向对头的成员(front)指向对尾的成员(end)保存元素的数组(queue),跟据以上分析我们不难得到一个结构体。代原创 2021-08-16 22:08:15 · 426 阅读 · 0 评论 -
单链表的实现
对链表的理解:单链表由头节点,尾节点和中间的多个节点组成,每个节点由两中数据组成,一个为数据区域另一个为指针区域,数据区域用来保存存入的数据,指针区域用来保存下一个节点的地址,从而将多个节点连接成完整的链条(一环扣一环),头节点的数据区域不用存入数据,将最后一个节点的指针区域定义为空(NULL),以此作为最后一个节点。1 图示为:2 链表的初始化在实现将元素插入链表的前提下先将链表初始化才能实现链表元素的插入//初始化链表bool initLinkList(linkList*&a原创 2021-08-04 21:39:21 · 373 阅读 · 0 评论 -
用顺序表模拟简单web服务器实现用户超时处理
具体实现方案:1:当有新的请求连接到服务器时,经过服务器频率限制模块判断,貌似恶意连接,则使用顺序表来保存此连接的超时数据,超时值用时间戳来表示时间戳是指格林威治时间1970年01月01日00分00秒(相当于北京时间1970年01月01日08时00分00秒)时至现在的总秒数,其结构体定义如下:struct Timeout { int fd; //每一次连接的整数编号 time_t timeout;//用超时时间戳来表示};2:自己设计一个顺序表 以下是自己对顺序表的浅薄认识(1)..原创 2021-07-20 21:48:50 · 156 阅读 · 0 评论 -
栈 数据结构的实现
1:什么是栈?原创 2021-09-14 23:22:13 · 273 阅读 · 0 评论 -
循环链表的实现
循环链表的引入:有 10 个老年朋友按编号顺序 1,2,。。。,10 顺时针方向围成一圈。从 1 号开 始顺时针方向 1,2,。。。,9 报数,凡报数 9 者出列(显然,第一个出圈为 编号 9 者)。 最后一个出圈者的编号是多少?第 5 个出圈者编号是多少?为了解决以上问题特地使用循环链表。1:循环链表和单链表不同循环链表首尾相连,而单链表有头有尾,所以循环链表只是在单链表的基础上把单链表的头和尾相连起来(前提:在了解单链表的基础上才能对循环链表进行操作)。2:首先先定义一个结构体来表示一个原创 2021-08-07 13:12:53 · 574 阅读 · 0 评论