Data Structure
文章平均质量分 69
数据结构
拥抱@
时刻提醒自己:自信力 自控力 执行力 精准的语言表达能力 敏锐的逻辑思维
展开
-
结构体嵌套大小和指定对齐数时的大小计算
一般结构体大小计算原则一,结构体变量的首地址,必须是结构体 “最宽基本类型成员” 大小的整数倍。二,结构体每个成员相对于结构体首地址的偏移量,都是该成员的整数倍。三,结构体的总大小,为结构体 “最宽基本类型成员” (将嵌套结构体里的基本类型也算上,得出的最宽基本类型) 大小的整数倍。1、简单结构体struct s1{char ch1;char ch2;int i;};这个结构体的大小容易计算,满足后两个原则即可,为8。struct s2{char ch1;int i;char原创 2021-10-17 12:25:09 · 1303 阅读 · 0 评论 -
树、二叉树、森林互相转换学习笔记+图解
1.概念树:森林:二叉树:研究二叉树的意义:2.转化将树转换为二叉树:树中每个结点最多只有一个最左边的孩子(长子)和一个右邻的兄弟。按照这种关系很自然地就能将树转换成相应的二叉树:1.在所有兄弟结点之间加一连线2.对每个结点,除了保留与其长子的连线外,去掉该结点与其它孩子的连线。如下图所示:将一个森林转换为二叉树:具体方法是:1.将森林中的每棵树变为二叉树;2.因为转换所得的二叉树的根结点的右子树均为空,故可将各二叉树的根结点视为兄弟从左至右连在一起,就形成了一原创 2021-09-22 10:32:18 · 2820 阅读 · 0 评论 -
数据结构——“图”的相关知识总结
1. 图的基本概念图是由顶点集合及顶点间的关系组成的一种数据结构:G = (V, E),其中:顶点集合V = {x|x属于某个数据对象集}是有穷非空集合;E = {(x,y)|x,y属于V}或者E = {<x, y>|x,y属于V && Path(x, y)}是顶点间关系的有穷集合,也叫做边的集合。(x, y)表示x到y的一条双向通路,即(x, y)是无方向的;...原创 2019-07-12 10:58:18 · 4162 阅读 · 0 评论 -
数据结构学习——浅谈B树的一些相关总结
B-树 —— 平衡的多叉搜索树。1.优势:如果一个节点中保存的信息多一些,那么树的高度就会降低;多个孩子节点指针意味着降低了树的高度(提高查找效率)数据节点多一些,相应的也会降低IO次数。我们应该知道的是Mysql这些数据库的索引的底层实现部分就是用B-树这种结构来实现的。2.规则:一棵m阶B树(balanced tree of order m)是一棵平衡的m路搜索树。它或者是...原创 2019-07-11 22:55:11 · 261 阅读 · 0 评论 -
算法篇——并查集
并查集 在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中,其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,计算...原创 2019-07-11 00:32:08 · 216 阅读 · 0 评论 -
数据结构学习——RBT(红黑树)以及实现Map和Set
我们知道,二叉搜索树是个很好的数据结构,可以快速地找到一个给定关键字的数据项,并且可以快速地插入和删除数据项。但是二叉搜索树有个很麻烦的问题,如果树中插入的是随机数据,则执行效果很好,但如果插入的是有序或者逆序的数据,那么二叉搜索树的执行速度就变得很慢。因为当插入数值有序时,二叉树就是非平衡的了,排在一条线上,其实...转载 2019-06-27 11:45:11 · 1050 阅读 · 0 评论 -
C+学习——浅谈位图与布隆过滤器
1.位图所谓位图,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。题目:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快 速判断一个数是否在这40亿个数中。 【腾讯】思路:这道题首先要判断40亿个不重复的无符号整数究竟占多大的内存,因为太大的内存我们无法加载到现有的计算机中。一个整数是4个字节,40亿个整数就...原创 2019-06-23 15:48:37 · 458 阅读 · 0 评论 -
数据结构学习——浅谈AVL树的实现过程
AVL树介绍AVL树是根据它的发明者G.M. Adelson-Velsky和E.M. Landis命名的。它是最先发明的自平衡二叉查找树,也被称为高度平衡树。相比于"二叉查找树",它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。上面的两张图片,左边的是AVL树,它的任何节点的两个子树的高度差别都<=1;而右边的不是AVL树,因为7的两颗子树的高度相差为2(以2为根节点的树...转载 2019-06-21 20:51:08 · 618 阅读 · 0 评论 -
数据结构学习——链表相关习题(持续补充...)
合并有序链表思路:先比较两个链表的首元结点,较小者作为合并后链表的首元结点。之后递归比较。注意点:1.想清楚合并的过程; 2:注意代码的健壮性代码:ListNode* Merge(ListNode* pHead1,ListNode* pHead2){if(pHead1==NULL) return pHead2;if(pHead2==NULL) return pHead1;L...原创 2019-06-20 20:50:12 · 231 阅读 · 0 评论 -
数据结构学习——二叉搜索树BST相关代码(c++实现)
二叉搜索树的c++实现#include<windows.h>#include<iostream>using namespace std;typedef int DataType;struct node{public: node() :key(0), left(nullptr), right(nullptr), father(nullp...原创 2019-06-13 23:47:41 · 517 阅读 · 0 评论 -
数据结构:浅谈“堆”的相关操作
写在前面: 这几天花了一些时间将“数据结构—堆”的相关操作和逻辑原理捋了捋。今天简明扼要的做一下小结。 在正式看“堆”之前,大家先读一下我在百度截取的关于堆的定义。那么,我截取这句...原创 2019-04-15 11:49:49 · 254 阅读 · 0 评论 -
数据结构二叉树相关代码总结(供自己复习)
二叉树的建立://二叉树的二叉链表结构,也就是二叉树的存储结构,1个数据域,2个指针域(分别指向左右孩子)typedef struct BiTNode{ ElemType data; struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;//二叉树的建立,按前序遍历的方式建立二叉树,当然也可以以中序或后序的方式建立二叉树...原创 2019-03-28 22:19:35 · 7125 阅读 · 0 评论 -
数据结构:栈和队列
顺序栈:#pragma once// 数据类型typedef int SDataType;// 利用静态顺序表实现栈#define MAX_LEN (100)typedef struct { SDataType array[MAX_LEN]; int top; // 职责就是原来的 size} Stack;void StackInit(Stack *stack) ...原创 2019-03-25 21:23:08 · 218 阅读 · 0 评论 -
数据结构学习:浅谈单链表与双链表的区别
Ok,不多说废话,先附上相关代码。我们这里采用的是不带头单链表和带头结点的循环双向链表供大家参考。单链表typedef struct SListNode{ int data ; struct SListNode* next ;}SListNode ;//封装了一个指向链表节点指针的结构体,通过这个结构体变量进行单链表的调用。typedef struct SList{ st...原创 2019-03-25 18:11:54 · 1275 阅读 · 0 评论 -
单链表:带头结点和不带头结点 总结
写在前面: 一直以来,带头结点和不带头节点的单链表的操作实现困扰着我。在没有理解和实现之前,光凭思考真的是很难理解清楚1.两者之间代码的差异;2.带不带头结点的区别;3.带头结点之后,什么情况下形参必须传二级指针(或者一级指针的引用); ...原创 2019-03-25 17:54:01 · 18309 阅读 · 2 评论 -
数据结构---线性表之动/静态顺序表
线性表(linear list):是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。本片文章主要讲述线性表中的静态顺序表和动态顺序表。1. 静态顺序表:使用定长数组存储。2...原创 2019-01-03 01:26:02 · 8019 阅读 · 0 评论 -
数据结构---单链表(不带头结点)的相关操作
链表节点定义:typedef struct SListNode{ int data ; struct SListNode* next ;}SListNode ;封装了一个指向链表节点指针的结构体,通过这个结构体变量进行单链表的调用。typedef struct SList{ struct SListNode* first ;}SList ;代码如下://SList.h...原创 2019-01-04 00:34:52 · 3045 阅读 · 2 评论