![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 54
暂代
须知少日拿云志,曾许人间第一流。
展开
-
C语言实现顺序表结构(静态)
用c语言实现一个静态的顺序表结构,读者注意我的编码风格原创 2017-12-06 13:00:19 · 402 阅读 · 0 评论 -
红黑树笔记
红黑树的五条性质:树中的每个结点颜色不是红的,就是黑的;根结点的颜色是黑的;所有为 NULL 的叶子结点的颜色是黑的;如果此结点是红的,那么它的两个孩子结点全部都是黑的;对于每个结点,从该结点到到该结点所有子孙结点的所有路径上包含有相同数目的黑结点;插入操作当创建一个红黑树或者向已有红黑树中插入新的数据时,只需要按部就班地执行以下 3 步:由于红黑树本身是一棵二叉查找树,...原创 2019-06-25 09:28:31 · 194 阅读 · 0 评论 -
如何在10亿数中找出前1000大/小的数?
一、内存空间足够大分治法随机选一个数flag,然后对整个数组进行分割,会得到两部分,前一部分的数都大于flag,后一部分的数都小于flag。示例:如果说前一部分总数大于1000个,那就继续在前一部分进行分割。如果前一部分的数小于1000个,那就在后一部分再进行分割,寻找剩下的数。利用分治法,对左边或者右边进行循环分割,直到找够Top 1000。时间复杂度 :O(N)计算过程 :我们...原创 2019-06-01 20:03:24 · 933 阅读 · 0 评论 -
三种数据结构的设计理念笔记
红黑树二叉排序树:左孩子节点比父节点小,右孩子节点比父节点大,并且左右子树都是二叉排序树。二叉排序树缺陷:在极端情况下,比如插入的序列是有序的,那么二叉排序树就会退化成单支树(链表)。解决方案:优化成平衡树(AVL树,红黑树),在插入的同时调整这棵树,让节点分布尽可能地均匀。之所以要平衡,是因为树的查找性能取决于树的高度,而平衡树就是在降低树的高度。B树B树是一种多路搜索树,它的每个节点...原创 2019-05-30 12:04:57 · 326 阅读 · 0 评论 -
单链表的逆置算法解析
问题描述:比方说,一个不带头节点的单链表原来从头到尾存储的是(1, 2, 3, 4, 5),逆置后链表从头到尾存储的是(5,4,3,2,1)解决思路:我暂时想到的有三种解法: 1)从头到尾依次访问旧的链表节点,每访问一个,就将这个节点的数据用头插的方法插入到新的链表中,这样当旧的链表访问完毕时,新的链表就构造成功了,然后释放掉原来的链表空间,将头指针指向新的链表头节点。 2)和第一个...原创 2018-10-31 12:44:46 · 20311 阅读 · 5 评论 -
栈简易教程
栈(FILO)copyright@分时天月概论基本概念只能从线性表的一端进行插入和删除元素操作的数据结构即为栈。应用场景根据概念我们就可以得出,凡是只在数据结构一端进行插入删除的,并且不需要支持随机存取的场景就可以采用栈结构。下面列举一些栈的使用场景:C / C++ 函数调用是借助 栈帧 结构实现的,栈帧即栈结构(有兴趣的读者可以看看这个具体是怎么实现的)编译过程中的语法检查...原创 2018-10-26 11:28:32 · 342 阅读 · 0 评论 -
链表简易教程
链表copyright@分时天月请忽视我的画工~~一、概论1. 基本概念1.1 概念 逻辑结构上一个挨一个的数据元素,但是物理存储却没有占用一段连续空间的结构。示意图如下:由上图也可以看出,链表节点的构成:数据域 和 指针域。数据域存储链表需要存储的数据指针域存储后继节点在内存中的地址,即图中第一个节点指针域存储的 0xAB87AS,这个地址就是下一个节点的起始地址(...原创 2018-10-26 11:27:22 · 451 阅读 · 0 评论 -
队列简易教程
队列(FIFO)概论基本概念只在线性表的一端进行添加元素,在线性表的另一端进行删除元素的数据结构称为队列。这种规则称为 **FIFO(first input first output)**原则。 进入队列的一端称为“队尾”,出队列的一端称为“队头”。应用场景根据队列的存储特性,只需要使用数据结构实现一种顺序执行 / 访问的场景可以使用队列。计算机开发中使用队列这种逻辑结构也非常广泛,像...原创 2018-10-28 09:03:48 · 596 阅读 · 1 评论 -
顺序表简易教程
顺序表顺序表的各项操作我采用静态的方式讲解,因为我觉得如果需要支持动态扩容的线性结构,那么链表会是一个更好的选择,所以我通常使用顺序表结构只使用静态的就足够了。概述顺序表可以分为静态顺序表和动态顺序表两种,静态顺序表不可以扩容,一旦创建,它的容量就写死了,是多大就是多大,而动态顺序表则可以扩容。通常情况下,动态顺序表使用价值比较好一些,但是这也不一定,因为有时候我们确认了某些结构的空间不...原创 2018-10-19 17:26:19 · 516 阅读 · 0 评论 -
泛型编程实现结构Set
#include <iostream>//采用泛型编程的方式实现了一个支持交集,并集,差集,添加,删除方法的 set//规定这个集合不能包含相同元素//实现一个不包含重复数值域单链表//插入的时候按序插入//链表的节点template<class T>struct ListNode{ ListNode<T>* _next; T _ele...原创 2018-10-16 14:29:54 · 305 阅读 · 0 评论 -
单链表实现多项式相加
这个小项目用C语言实现代码中有我的注释代码://mylist.h#pragma oncetypedef int DataType;typedef char Variate;typedef struct Node{ DataType _elem; //项的系数 Variate _ch; //规定'#'表示此项为常数项 int _power; //项的次方 s...原创 2018-10-13 20:04:19 · 12161 阅读 · 0 评论 -
c语言_通讯录(非初级版)
之前说写一个改良版的通讯录,一直没有时间来写,下面我就讲一下这个要怎么写,只要跟着我的思路,相信你读完一定会有所收获(大佬请忽视这句话-.-!) 这个版本的通讯录是一个动态的版本并且会加上文件操作,解释一下这句话就是 这个版本的通讯录可以“无限”的增加联系人的信息(只要你的外存足够大),并且 可以将联系人的信息保存在外存而不是内存上,下次打开这个程序还可以读取以前 ...原创 2018-06-25 21:52:24 · 420 阅读 · 0 评论 -
动态内存管理_C
一、函数介绍 以下四个函数都包含在头文件< stdlib.h >1.malloc 函数原型:void *malloc(size_t size); 作用:从堆空间申请内存 函数参数:需要申请的空间大小(字节数) 返回值:申请成功则返回一个指向申请到的内存的指针,失败则返回NULL2.calloc 函数原型:void *calloc(size_t num,siz...原创 2018-04-30 09:17:35 · 337 阅读 · 0 评论 -
c语言_通讯录(初级版)
这是一个简单的通讯录(实现方案是初级版,并且只能在程序运行期间存在(没有写入文件))(以后还会写一个用动态内存分配+实现文件存储的版本)代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<Windows.h>#pragma warning(dis...原创 2017-11-27 21:23:28 · 1458 阅读 · 0 评论 -
C语言实现链表
用C语言实现数据结构和算法莫过于最爽的事。 —摘自CoolShellPS:这里我用C语言实现的链表是不带头节点的单链表,这个是链表里面实际操作中最容易出错的一种链表,我在代码中会指出需要注意的内容说明-&amp;amp;gt;SListHead.h 尾插:从单链表的尾部插入一个新的节点 尾删:从单链表的尾部删除一个节点 头插和头删就不用说明了吧。。。#include&amp;amp;lt;stdio...原创 2018-02-21 09:35:34 · 427 阅读 · 0 评论 -
二叉搜索树操作详解
二叉搜索树(二叉排序树)是一种搜索结构,它通常具有一下特点:若他的左子树不为空,则左子树上的所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树中序遍历的结果是升序序列 下面,我讲一下二叉搜索树的基本操作方法查找 若根节点不为空: 如果根节点key == 目标key,返回true 如果根节点key >...原创 2018-02-28 22:24:31 · 366 阅读 · 0 评论 -
c语言实现顺序表(动态)
代码如下,代码的解析附于代码中:#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#include&lt;assert.h&gt;#define Init_size 5//使顺序表更加灵活typedef int DataType;//使顺序表具有通用性typedef struct SeqListD{ DataType *_pDa...原创 2018-01-15 13:18:31 · 5172 阅读 · 0 评论 -
聊一聊布隆过滤器(Bloom filter)
一个网站要添加URL黑名单,需要把包含20亿条URL的黑名单存储到计算机上,怎么存?怎么快速判断浏览器输入的url是否在黑名单中?原创 2019-09-16 16:56:17 · 474 阅读 · 0 评论