自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 平衡二叉树

平衡二叉树的全称叫平衡二叉搜索树,它首先是一棵二叉搜索树,且具有以下性质:它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。对于一般的二叉搜索树,它的理想高度是为log2n,其各操作的时间复杂度(O(log2n))。但是,在某些极端的情况下(如:在插入的序列是有序的时),二叉搜索树将退化成近似单向链表,此时它的操作时间复杂度将退化成线性的,即O(n)。

2023-08-12 15:00:00 53 1

原创 二叉树的遍历

1、判断二叉树是否为空,若二叉树为空,则不操作。2、访问根结点3、前序遍历左子树4、前序遍历右子树1、判断二叉树是否为空,若二叉树为空,则不操作。2、中序遍历左子树3、访问根结点4、中序遍历右子树1、判断二叉树是否为空,若二叉树为空,则不操作。2、后序遍历左子树3、后序遍历右子树4、访问根结点按照从上到下、从左到右的顺序遍历二叉树,需要与队列结构配合,普通的顺序队列即可,不需要链式队列或循环队列。

2023-08-11 12:00:00 61 1

原创 什么是二叉树

树型结构是一种非线性的数据结构,它具有一个称为根节点(root node)的特殊节点,以及一些称为子节点(child nodes)的节点。每个节点可以有零个或多个子节点,但只能有一个父节点(parent node),除了根节点没有父节点。在树型结构中,节点之间的连接关系表示了它们之间的层次关系。树型结构常用于表示具有层次关系的数据,例如文件系统、组织结构、目录结构等。它提供了一种便捷的方式来组织和访问数据。

2023-08-10 10:00:00 73 1

原创 栈和队列介绍

栈(stack) 是限定仅在表尾进行插入或删除操作和线性表(只有一端口能进出数据),对栈来说表尾和表头有特殊含义,表尾被称为栈顶,表头被称为栈底,没有元素的空表称为空栈,元素数量达到栈的容量称为满栈,数据添加到栈中叫入栈、压栈,数据从栈中删除叫出栈、弹栈,由于栈元素特殊添加和删除的规则,所以栈的元素会先进后出的现象,简称为LIFO后进先出(FILO。

2023-08-09 18:45:00 46 1

原创 什么是线性表

所谓的双向循环链表就是头节点的前驱是尾节点,头节点是尾节点的后继,这样的好处是可以让头节点、尾节点共用一个空白节点,有些奇怪的是当链表空时,空白节点的前驱和后继指针都指向自己,操作双向循环链表时,不存在空指针,以下是有修改代码,其它代码与双向链表没有区别。链存储结构的特点是元素可以使用存储内存中的任何位置(可以是连续的,也可以不连续),元素a[i]和a[i+1]的逻辑关系不依靠相对位置,而是元素中增加一个指示其后继元素的数据(元素指针),元素本身的数据+后继信息构成了存储映像,俗称节点(node)。

2023-08-08 08:00:00 53

原创 什么是数据结构

不同的逻辑结构可能对应不同的存储结构,同一种逻辑结构也可以有多种不同的存储结构实现方式。总结起来,集合是无序的,线性结构中元素有序且一对一关系,树形结构中元素有层级关系,图形结构中元素之间存在多对多的关系。数据结构不是研究数值计算的这些是数学家应该研究的问题,它是研究计算机存储、组织数据的方式问题的学科,数据结构会影响算法的效率,合适的数据结构可以带来更高的运行或存储效率。逻辑结构描述了数据元素之间的逻辑关系和组织方式,它关注的是数据元素之间的逻辑关系,而不考虑具体的存储方式和物理结构。

2023-08-07 19:00:34 87

原创 条件语句(if、switch、for、while、do while)会根据条件选择执行哪些代码

D ARR_LEN=3 <=> #define ARR_LEN 3 跟在代码中定义宏的效果一样。

2023-07-31 12:15:00 45 1

原创 预处理:程序员所编译C代码不能被直接编译

define 宏名 [会被替换的内容]由于宏常量和宏表达式可能使用在表达式中,因此在定义宏常量和宏表达式的末尾不要加分号。__FILE__ 获取当前文件名__func__ 获取当前函数名__LINE__ 获取当前行号__DATE__ 获取当前日期__TIME__ 获取当前时间__WORDSIZE 获取当前编译器的位数// 适合用来显示警告、错误信息。宏函数不是真正的函数,而是带参数的宏替换,只是使用方法像函数而已。

2023-07-30 18:15:00 38 1

原创 什么是内存碎片:

内存已经不再使用,但无法被释放的内存叫内存泄漏。但这不是最严重的,严重的是反复的内存泄漏,例如:一个函数执行需要分配一块堆内存,等它执行完毕后堆内存没有被释放,等再次调用这个函数时,它又重新分配堆内存,又没有释放,反复这样会导致可用的内存越来越少,系统、程序会变得越来越慢、卡、死机。

2023-07-29 17:00:00 161

原创 堆内存越界时为什么超过135160才会出现段错误?

操作系统交给malloc33页内存(135168个字节),可访问的范围是0~135167,malloc会预留8个字节的空隙,返回给程序的是33页内存的第9个字节的地址(33页内存还剩135160个字节),所以可访问的范围是0~135159,只要在这个范围就不会出现段错误。

2023-07-28 18:00:00 189 1

原创 C语言的堆内存管理

C语言中没有管理堆内存的语句,C标准库中提供一套管理堆内存的函数,这些函数底层封装了各操作系统的堆内存管理接口,所以可以跨平台使用,这些函数声明在头文件中。

2023-07-27 18:59:57 52 1

原创 指针的进步值:

指针变量里面存储的是整数,代表着内存的编号(每个整数都对应着一字节的内存)。

2023-07-16 18:00:00 57 1

原创 使用指针要注意的问题:

指针变量中如果存储的是NULL,那么它就是空指针,因此操作系统规定程序不能访问该内存,只要访问就会产生段错误,同时也是返回值是指针类型的函数执行错误的标志。1、当指针变量接收了函数的返回值,判断是否是空指针,既能避免访问空指针产生的段错误,也能知道该函数执行是否失败、出错。野指针无法判断出来,但所有的野指针都是人为制造出来的,所以要想避免野指针产生的错误,只能不制造野指针。指针变量中存储的地址,无法确定是否是合法的内存地址,这种指针变量被称为野指针。3、脏数据,存储的是其它变量的内存地址。

2023-07-13 18:52:22 118

原创 什么是指针

1、指针变量中只记录了内存中某字节的地址编号,我们把它当作一个内存块的首地址,当使用指针变量访问内存时具char* p;// 能访问1字节short* p;// 能访问2字节int* p;// 能访问4字节体访问多少个字节,由指针变量的类型决定。2、普通变量与指针变量的用法不同,为了避免混用,所以指针变量一般以p结尾。3、指针变量不能连续定义,一个*只能定义出一个指针变量。// p1是指针变量,p2、p3是普通的int类型变量// p1、p2、p3都是指针变量。

2023-07-13 18:47:52 700 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除