![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 50
belongAL
努力的阿鲤
展开
-
B树的介绍和实现(图解实现)
以下是阿鲤对B树的学习总结,希望可以帮助到大家。一:B树的介绍 1:为什么需要B树 2:B树的规则二:B树的实现 1:分裂 2:富含详细注释的代码一:B树的概念1:为什么需要B树我想大家都知道AVL树,红黑树数据结构,他们都可以高效的对数据进行搜索,那么为什么该需要B树呢?这是因为上述的数据结构都是在内存中使用的,那么当我们的数据量过大,内存中存储不下的时候应该怎么办呢?对于这样的数据我们就可以放在硬盘里面了...原创 2020-07-12 12:11:03 · 1232 阅读 · 1 评论 -
图解字典树+简单实现+应用(算法题-字典序)
以下是阿狸对字典书学习的总结,希望可以帮助到大家一:字典树的介绍二:字典树的简单实现三:字节跳动真题——字典序原创 2020-06-23 23:29:54 · 650 阅读 · 0 评论 -
二叉搜索树的实现(增,删,顺序输出)
这里只对删除做出部分解释 ①左右子树都有: a、左子树没有右孩子 直接让左孩子继承自己的右孩子和父亲 b、左子树有右孩子 一路向右,找到最后的一个右孩子,然后将这个孩子的 左子树挂在它父亲的右子树上,然后让它继承要删除节点的...原创 2019-11-21 20:44:55 · 346 阅读 · 0 评论 -
红黑树的插入删除及迭代器的实现(c++实现)
实现:直接上代码,有注释原创 2020-03-04 20:36:18 · 426 阅读 · 1 评论 -
给定一个无头单链表的非尾节点的位置,请你删除它(单链表面试题)
首先我们给出函数代码void pListDelete(pList *p) //p为非尾节点{ assert(p&&p->next);//确定边界 pList pCur = p->next; p->data = pCur->data;//把p->next的值域赋值给p的值域 p->next = pCur->next; ...原创 2019-09-17 20:54:37 · 147 阅读 · 0 评论 -
简单易懂的 :树的介绍+二叉树的介绍+堆的介绍+完全二叉树(堆)的实现;
一:树的概念树是一种非线性的数据结构,它由n(n>0)个有限节点组成的一个具有层次的关系集合。那么为什么把它叫做树呢?这是因为它的结构看起来就像是一颗倒挂起来的树;如下图接下来我们就看看树节点的一些概念;在一个n个节点的树包含一个根节点和n-1个非根节点,如上图所示,1就是该树的根节点;而一个非根节点有且只有一个父节点,例如上图,2的父节点是1,7的父...原创 2019-09-19 21:12:14 · 231 阅读 · 0 评论 -
使用堆求大量数据的 topk
首先这个是堆介绍及实现的链接假设你有n个数据需要求出其前k个最大数有以下几步(我们假设k=5):n个数据为(1,8,23,5,76,90,12,15,7,2,14,66,88,33,12,48,95,46)首先上代码:(之后有详细图解)#include<stdio.h>#include<stdlib.h>#include<assert.h&g...原创 2019-09-22 10:19:51 · 309 阅读 · 0 评论 -
图解二叉树的创建及部分操作
以下是阿鲤对二叉树的学习及理解,特此分享,希望能帮到部分同学;若有不多支出请慷慨指出。阿鲤将将以以下顺序讲解(c语言实现)BTNode *_CreateBinTree(char *array, int size, int* index, BTDataType invalid);//二叉树的建立BTNode *CreateBinTree(char *array, int size, BT...原创 2019-09-24 17:47:30 · 814 阅读 · 0 评论 -
队列的介绍及面试题(用队列实现栈)
一:队列的概念队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表;队列具有先进先出 FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头、二:队列的实现队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数 组头上出数据,效率会比较低。...原创 2019-09-16 22:53:19 · 220 阅读 · 0 评论 -
栈区与栈的区别
栈区:程序运行时候分配的一块内存空间,取名为栈区;存放函数运行起来的一些信息栈:后进先出的数据结构原创 2019-09-16 20:02:25 · 451 阅读 · 0 评论 -
栈的介绍及面试题代码(括号匹配问题)
1:栈1.1栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。——后进先出 1.2:栈的实现...原创 2019-09-16 13:48:40 · 167 阅读 · 0 评论 -
单链表的头插、尾插、查找、打印、逆置、删除内容是k的节点和求倒数第k个节点;(c实现)
代码分为三部分,list.h(头文件)、list.c(函数实现)、test.c(主函数);list.h#ifndef _LIST_H_#define _LIST_H_#include<stdio.h>#include<stdlib.h>#include<assert.h>typedef struct Node{ int data...原创 2019-08-17 18:43:12 · 117 阅读 · 0 评论 -
用图介绍有头单链表的头插法逆置
头插法逆置请先看代码:void Reverse(List plist)//逆置{ assert(plist != NULL); Node *p, *q; p = plist->next; plist->next = NULL; while (p != NULL) { q = p; p = p->next; q->next = plist-...原创 2019-08-18 15:10:43 · 544 阅读 · 0 评论 -
数据结构之顺序表
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组 上完成数据的增删查改;在这份代码里分别完成了一些线性表的功能;在我理解,线性表就是将数组结构化。list.h#ifndef _LIST_H_#define _LIST_H_#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>...原创 2019-09-07 16:58:17 · 155 阅读 · 0 评论 -
不带头节点总结
这些基本的操作在代码里都有注释,任意位置插入有图解,有了这些应该可以看懂了,看不懂的话请留言阿鲤给你解释。希望可以对大家有一点帮助(文件在最后)首先任意位置插入的图解:首先总代码是这样的void SListInsert(pNode pos, SDataType data)//任意位置插入{ if (NULL == pos) return; else { pNode...原创 2019-09-08 10:09:22 · 155 阅读 · 0 评论 -
图解无头单链表的两种逆置方法
方法一:三指针法首先,上代码void pListReversal1(pList *pHead)//反转单链表1:三指针法{ assert(pHead); pList pFast = *pHead; pList pMiddle = *pHead; pList pSlow = NULL; while (pFast) { pFast = pFast->_pNext;...原创 2019-09-11 20:14:59 · 1362 阅读 · 0 评论 -
无头单链表的一些基本操作
实现以下功能pList pListinit(pList *pHead);//初始化void pListPushBack(pList pHead, DataType data);//尾插pList pBuyNewNode(DataType data);//创建一个新节点void pListShow(pList pHead);//打印void pListDeleteAll(pList...原创 2019-09-11 22:08:43 · 231 阅读 · 0 评论 -
图解复杂链表的拷贝
描述:给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的深度拷贝。、函数代码:头文件:#ifndef _PLIST_H_#define _PLIST_H_#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>...原创 2019-09-14 18:35:39 · 148 阅读 · 0 评论 -
链表与顺序表的区别
下面是阿鲤对线性表和链表的一些笼统的对比顺序表 链表 支持随机访问 不支持随机访问 一段连续的空间 不连续的空间 可能需要扩容 不需要扩容 不需要频繁申请空间 每次插入都需申请空间(会产生内存碎片) 应用于插入量少的情况 应用于插入量多的情况 缓存利用率高 缓存利用率低 操作相对容易 操作相对复杂 ...原创 2019-09-14 20:58:46 · 496 阅读 · 0 评论 -
利用快排求数组中前K个最小值
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>void Show(int arr[], int k){ int i = 0; for (i = 0; i < k; i++) { printf("%3d", arr[i]); } printf("\n");...原创 2019-08-18 17:03:41 · 271 阅读 · 0 评论