数据结构
文章平均质量分 60
生若直木,不语斧凿ᝰ
口红都买不起谈什么恋爱
展开
-
二叉树
二叉树基本概念 二叉树是一个连通的无环图,并且每一个顶点的度不大于3。有根二叉树还要满足根结点的度不大于2。有了根结点之后,每个顶点定义了唯一的父结点,和最多2个子结点。二叉树性质如下:(1)二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。(2)二叉树的第 i 层至多有 2i−1个结点。(3)深度为 k 的二叉树至多有 2k−...原创 2019-01-21 19:07:31 · 341 阅读 · 0 评论 -
指针数组的加一操作及指针运算
今天和大家探讨一下下面代码中的指针进行P++操作的几种可能性及哪种方式更合理int main() { int arr[] = {1,2,3,4,5,6,7,8,9,10}; int *p = arr; //定义一个整型指针变量p保存整形数组arr的首地址 *p = 10; //通过解引用访问arr[0] p++; *p = 20; ...原创 2018-04-08 17:25:46 · 5868 阅读 · 1 评论 -
最常用的三种哈希算法
散列算法(Hash Algorithm),又称哈希算法,Hash算法能将将任意长度的二进制明文映射为较短的二进制串的算法,并且不同的明文很难映射为相同的Hash值。也可以理解为空间映射函数,是从一个非常大的取值空间映射到一个非常小的取值空间,由于不是一对一的映射,Hash函数转换后不可逆,意思是不可能通过逆操作和Hash值还原出原始的值。散列方法的主要思想是根据结点的关键码值来确定其存储地址:...原创 2019-05-17 21:36:33 · 39771 阅读 · 0 评论 -
结构体的大小问题
在讨论结构体的大小前我们先回顾一下结构体的一些小知识,结构体作为一种自定义类型很方便的解决了同意存储区域内存储多个数据类型的问题,结构体的一个特别之处是在定义完成之后相当于内置类型,可以在另一个结构体的定义中使用.结构体不能定义一个自身的普通成员变量,但是可以定义一个指向自己的指针(常运用于链表).接下来通过一段代码展示结构体的定义和基本用法:struct student a//定义一...原创 2018-05-17 19:52:36 · 437 阅读 · 0 评论 -
单链表
链表与顺序表的区别以及应用场景:两者都是线性结构,链表是逻辑上连续,但是物理地址上不一定连续的一种数据结构;而顺序表则是逻辑上连续且物理地址上也连续的一种数据结构(一维数组); 对于频繁的插入或者删除建议使用链表这种数据结构,因为顺序表存在一个元素移动的问题,增加时间复杂度; 对于索引查找或者定点插入建议使用顺序表,直接可以利用数组下标定位;而链表的每次查找都会进行一次遍历;链表的数据结构...原创 2019-08-08 13:34:03 · 295 阅读 · 0 评论 -
值传递问题——GetMemory
指针的错误使用往往造成意想不到的错误,导致程序崩溃、数组越界、野指针的产生,一般都是因为: (1)野指针的使用,不使用了未置空; (2)动态内存申请未释放; (3)指针的值传递导致访问出错; (4)malloc申请内存后未进行出错检查; ...原创 2019-08-18 10:36:35 · 440 阅读 · 0 评论