数据结构与算法
文章平均质量分 60
dearQiHao
数据容灾备份
展开
-
03 折半查找
折半查找又称为二分查找。它仅适用于有序的顺序表。 折半查找的基本思想:首先给定值 key 与表中中间位置的元素比较,若相等,则查找成功,返回该元素的存储位置;若不等,则所需查找的元素只能在中间元素以外的前半部分或后半部分(例如,在查找表升序排列时,若给定值 key 大于中间元素,则所查找的元素只可能在后半部分)。然后在缩小的范围内继续进行同样的查找,如此重复,知道找到位置,或确定表中没有所需要查找的元素,则查找不成功,返回查找失败的信息。 算法:typedef int ElemType;原创 2021-10-05 19:33:59 · 105 阅读 · 0 评论 -
02 顺序查找
顺序查找 顺序查找也可以叫做线性查找。它对顺序表和链表都适用。对于顺序表可以通过数组下标递增扫描每个元素;链表通过指针 next 依次扫描每个元素。顺序表通常分为:对一般的无序线性表的顺序查找和按关键字有序的线性表的顺序查找。一般线性表的顺序查找 基本思想:从线性表的一段开始,逐个检查关键字是否满足给定的条件。若查找到某个元素的关键字满足给定的条件,那么就查找成功,返回该元素在线性表中的位置;若已经查到了表的另一端,但是没有查找到符合条件的元素,那么久返回查找失败的信息。 算法思想(正常版):原创 2021-10-04 17:52:10 · 446 阅读 · 0 评论 -
数据结构与算法 完整版双链表
上一篇单链表博主已经讲的很详细了,相信掌握单链表的朋友搞定双链表并不困难,所以博主就之给出代码了,如果实在感觉理解困难可以留言,博主会加gif的#include<stdio.h>#include<stdlib.h>// 实现单链表的构建、数据添加(头插法和尾插法)、数据删除(包含了数据查找),//数据的修改(包含了数据查找)、遍历的算法设计;typedef s...原创 2019-11-20 21:54:01 · 2153 阅读 · 1 评论 -
数据结构与算法 完整版单链表(附GIF)
因为博主认为单链表是非常重要的数据结构,能够熟练使用单链表的话后面的数据结构会越学越轻松,所以博主就把这篇博客做的细致一点,不是很好懂的地方做成 gif 动画,希望大家能理解期中代码的含义学习链表的最好方法:画图,必须是自己画图下面给出博主的代码,相信大家仔细看的话是能看懂的.部分细节在做 gif 时顾及不到,不要见怪了,主要是思想...原创 2019-11-18 23:42:36 · 2139 阅读 · 0 评论 -
数据结构与算法顺序表数组版
博主还在学校,写网络编程特别是后面的线程和多路I/O实在是太费精力,所以博主先把数据结构多跟新一点,也正好把学校的C语言数据结构的作业做了,正好一举两得这个内容比较简单,就不再细说。#include<stdio.h>#include<stdlib.h>#define Max 100//实现顺序表(数组)的创建、数据添加、数据删除、数据查找、数据修改、遍历数组的...原创 2019-11-17 22:43:44 · 2044 阅读 · 0 评论 -
NGINX下红黑树的删除(终章)附GIF
接着上一篇我们就只剩下了红黑树的删除了,这也是较为复杂的操作 其实删除的话我们是分为两个部分(1)删除(2)恢复删除:当你要删除一个点的时候又分为下面的情况删除时候的情况:1. 如果要被删除的节点没有孩子,那么就直接删除。2. 如果删除的节点有一个孩子,删除之后,用它的孩子还代替他。3. 如果有两个孩子,这个时候你可以选择左孩子那条路径里最大的值,或者右孩子最小的值来进...原创 2019-11-05 18:26:25 · 2872 阅读 · 2 评论 -
NGINX下的红黑树源码详解(附 流程图和GIF)
之前博主稍微讲解了下红黑树的原理,那么在这篇博客博主想要把红黑树讲的更加的透彻,以便于更多的人了解红黑树(本博客会更加详细的介绍之前的博客没介绍到的,所以各位看官不同再回去翻看博主之前那篇红黑树的原理讲解了。) 博主之前也看过很多对红黑树的介绍但是博主感...原创 2019-11-03 18:42:13 · 4002 阅读 · 5 评论 -
网络编程之 哈希表原理讲解 来自老司机的源码
鉴于博主很久没由跟新过数据结构的内容了,所以博主打算给大家讲解一下哈希表的操作下面的内容来自于一位老司机 martin的源码,博主在这里借用一下,目的是突出哈希表的原理,明天博主就周末了,也能腾出时间来给上传自己的哈希表的应用。这个是可以插入字符串的哈希表,一般的都是对数字的操作,所以这个的逼格是很高的!!!!(难点剖析放在最后)#pragma once #define DEFAULT...原创 2019-10-31 23:53:54 · 2461 阅读 · 0 评论 -
数据结构与算法之树
红黑树1.如果一个数要是红黑树,那么这个树首先就要满足平衡二叉树的性质。为什么需要平衡二叉树呢??? 也许在我梦构建树的时候会发生如下的情况这种情况根本就体现不出我们用树的好处所在了,所以为了避免这种情况的发生,我们希望能有一种算法,将上述情况的转化为平衡二叉排序树,这样就可以让我们的二叉排序树的结构达到最优化的状态。所以我们就有了平衡因子的概念。平衡因子: 左右子树的高度之差...原创 2019-10-21 20:07:33 · 1414 阅读 · 1 评论 -
数据结构与算法快慢指针
本次分享利用快慢指针解决环形链表有这样一个面试题判断单链表是否存在环题目描述:输入一个单向链表,判断链表是否有环。分析:通过两个指针,分别从链表的头节点出发,一个每次向后移动一步,另一个移动两步,两个指针移动速度不一样,如果存在环,那么两个指针一定会在环里相遇。bool doYouHaveCircle(Node *head,Node *&circleNode) { N...原创 2019-10-17 21:48:34 · 1940 阅读 · 0 评论 -
数据结构与算法之树的遍历
树的 “前” “中” “后” 遍历//如果要再写一个树太费时间了,所以博主在这篇博客只给出核心代码并赋予GIF演示动画,望大家好好理解以对树的三种遍历方式有更为深刻的理解 因为递归调用函数是有开销的,而且递归的次数受堆栈大小的限制,所以本篇博客不会介绍用递归的方式来遍历树. 而是使用 栈 来遍历树.前序遍历(博主上篇已经写过了,所以直接套用上篇的代码):前序遍历的主要思想就是:根节...原创 2019-10-16 22:44:52 · 1479 阅读 · 2 评论 -
数据结构与算法之 树
二叉搜索树的使用//这一个版本写的是较为简单的树,分为了三个部分组成,主要是利用栈的思想来进行前序遍历我们的树,本程序没有采用递归去前序遍历,用递归的话效率过低,不推荐使用.//本程序所实现的功能有//插入元素. 前序遍历 二叉搜索树的删除 .再次前序遍历 .查找指定节点teer.h#pragma once#define MAX_NODE 1024typedef int E...原创 2019-10-16 08:57:09 · 1261 阅读 · 1 评论 -
数据结构与算法之链式栈
链式栈的使用本篇博客遇上篇博客不同,不需要家条件判断栈是否为满,为了提高效率我们可以使用链表的前插法来表示栈,整体使用方法和单链表类似/*数据结构与算法之 栈的链式存储实验目的:(1) 实现栈的存储结构设计;(2) 实现栈的操作算法设计;(3) 利用栈实现应用问题的解决;实验内容:栈的初始化 打印栈内所有元素 判断栈空 入栈和出栈算法设计;*/#include<...原创 2019-10-14 22:47:56 · 2591 阅读 · 0 评论 -
数据结构与算法之栈的用法
顺序栈首先让我们来了解什么是栈?栈是存放数据对象的一种特殊容器,栈中的元素始终遵循后进先出的顺序利用这个特点我们就能解决许多实际生活中的问题.博主在这篇博客中打算利用栈来解决生活中的打字问题.让我们来假设这样一个场景 :你正在修改你自己的QQ签名(最多保存50个字),但是打着打着打错了一个字,这时候你就需要将打错的一个或者几个字删掉这就要用到我们的栈了,利用这种后进先出的特点就能 实...原创 2019-10-14 20:58:27 · 1405 阅读 · 0 评论 -
数据结构与算法之循环队列的操作
数据结构与算法之循环队列的操作/*循环队列的入队和出队算法设计初始化循环队列 、打印队列、插入元素到循环队列、获取循环队列的首元素,元素不出队、出队、获取循环队列元素个数、判断循环队列的空和满。核心:循环队列入队, 队尾循环后移: SQ->rear =(SQ->rear+1)%Maxsize;循环队列出队, 队首循环后移: SQ->front =(SQ->fro...原创 2019-10-13 21:22:45 · 2390 阅读 · 0 评论 -
数据结构与算法之顺序队列
顺序队列本程序能够对用户的输入做了合理的处理使得用户想要删除超过本队列的最大容量时会提醒用户该操作错误,从而让用户重新输入,更人性化的提供了两种删除队列元素的方法供用户选择…/*完成对队列的初始化 、判断队列的空和满、插入元素、获取队列的首元素、删除元素、销毁队列、返回队列的长度、打印队列*/#include<iostream>#include<Windows....原创 2019-10-12 23:12:55 · 1268 阅读 · 0 评论 -
数据结构与算法之双链表的操作
双链表的操作/*实现双链表的构建、初始化、数据添加(在指定位置添加)、数据删除(删除指定元素,并返回该元素的位置)的算法设计;*/#include<iostream>#include<Windows.h>using namespace std;typedef struct _DoubleLink { int data; struct _DoubleLi...原创 2019-10-12 00:45:16 · 2146 阅读 · 2 评论 -
数据结构与算法之单链表
数据结构与算法之单链表//链表的实现/* 实现单链表的 构建、数据添加、数据删除(返回元素所在位置)、数据查找(返回元素所在的位置)的算法设计;*/#include<iostream>#include<Windows.h>using namespace std;typedef struct _LinkList { int data; //指针域...原创 2019-10-11 20:24:30 · 1830 阅读 · 7 评论