数据结构
文章平均质量分 77
安心学编程
越努力,越幸运!
展开
-
【数据结构】二叉树概念 | 满二叉树 | 完全二叉树
二叉树在实践中用的很多。一棵二叉树是结点的一个有限集合,该集合:或者为空一个根结点两棵左子树右子树二叉树最多两个孩子这里注意:二叉树并不是度为2的树。二叉树的度最大值是2,并不是说它的度一定为2。二叉树不存在度大于2的节点;二叉树的子树有左右之分次序是不能颠倒的,因此二叉树是有序树。二叉树通俗也可以理解为对树进行了“计划生育”。“计划生育”也就是生两个小孩,但是是每一家来说都是生两个吗?度为2一定是二叉树。所有节点的最大的度就是2。原创 2023-11-23 11:49:51 · 659 阅读 · 1 评论 -
【数据结构】树如何定义 | 如何存储 | 实际应用
如上图,A中的孩子的个数是不固定的。我们无法精确的每个不同的根结点有多少个孩子。所以并不能精确知道需要定义多少个孩子节点。原创 2023-11-23 11:34:08 · 272 阅读 · 0 评论 -
【数据结构】树的基本概念 | 入门树以及二叉树必熟知
结点的度结点的度:一个节点含有的子树的个数称为该结点的度;如A节点的度为6,B节点的度为0。叶节点或终端结点叶节点或终端结点:度为0的节点称为叶节点;如上图P/Q/H/I/B/C...等都为叶节点。非终端节点或分支节点非终端节点或分支节点:度不为0的结点;如上图D/E/F/G/J都为非终端节点。双亲节点或父节点双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点;如上图:A是B的父节点。孩子节点或子节点孩子节点或子节点:一个节点含有子树的根结点则称为该结点原创 2023-11-23 11:20:09 · 97 阅读 · 0 评论 -
【数据结构】单链表 | 详细讲解
在链式结构中,除了要存储数据元素信息外,还要存储它的后继元素的存储地址。数据域:存储数据元素信息的域称为数据域;指针域:存储直接后继位置的域称为指针域。在指针域中存储的信息称为指针或链。数据域与指针域信息组成数据元素的存储映像,称为结点。单链表:n个结点链结成的链表,此链表中的每个结点中只包含一个指针域。原创 2023-11-15 21:43:57 · 649 阅读 · 37 评论 -
【数据结构】顺序表 | 详细讲解
顺序表是用一段物理地址连续的存储单元依次存储数据元素的数据结构,一般情况下采用数组存储。在数组上完成数据的增删改查。顺序表一般可以分为:静态顺序表:使用定长数组存储元素。动态顺序表:使用动态开辟的数组存储。原创 2023-11-11 18:26:31 · 1048 阅读 · 33 评论 -
【LeetCode笔试题】27.移除元素
【LeetCode笔试题】27.移除元素给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。原创 2023-11-11 12:15:04 · 193 阅读 · 1 评论 -
【LeetCode笔试题】88.合并两个有序数组
给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列。注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为m+n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。nums2的长度为n。原创 2023-11-11 10:57:59 · 164 阅读 · 0 评论 -
【LeetCode笔试题】26.删除有序数组中的重复项
给你一个非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为k,你需要做以下事情确保你的题解可以被通过:更改数组nums,使nums的前k个元素包含唯一元素,并按照它们最初在nums中出现的顺序排列。nums的其余元素与nums的大小不重要。返回k。示例:输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums原创 2023-11-11 08:58:03 · 331 阅读 · 1 评论 -
为什么数组的下标是从0开始呢?
我们在许多的编程语言中,大部分的数组下标都是从零开始的,那为什么不是从一开始的呢?下标从0开始的原因就是为了寻址方便。对比两个代码,会发现下标从1开始时,每次随机根据下标访问数组元素时,对于CPU来说,会多一个减法运算。数组作为非常基础的数据结构,通过下标随机访问数组元素又是其非常基础的编程操作,效率的优化就要尽可能做到极致。所以为了减少一次减法操作,数组选择了从 0 开始编号,而不是从 1 开始。原创 2023-10-29 12:56:52 · 1524 阅读 · 4 评论 -
【Note详细图解】中缀表达式如何转为后缀表达式?数据结构
中缀转后缀思路初始化两个栈:运算符栈S1;操作数栈S2从左向右扫描中缀表达式遇到操作数时,将其压入到操作数栈S2遇到运算符时,比较其与运算符栈S1栈顶运算符的优先级如果运算符栈S1为空,或栈顶运算符为左括号“ ( ”,或者优先级比栈顶运算符的优先级较高,则直接将此运算符压入栈中否则,将运算符栈S1中栈顶的运算符弹入并压到操作数栈S2中,再次进行与运算符栈S1栈顶运算符的优先级比较遇到括号时,如果遇到了左括号“ (”,则直接压入运算符栈S1;如果遇到右括号“ ) ”,则依次弹出运算符栈S1栈原创 2023-10-27 18:09:22 · 2897 阅读 · 3 评论 -
【Note】二叉树的遍历
基本思路:先序遍历的第一个结点一定是二叉树的根结点,而根据中序遍历规则,这个结点将同一棵二叉树的中序遍历序列分成了左、右两部分,左边部分是二叉树的根结点的左子树的中序遍历序列,右边部分是二叉树的根结点的右子树的中序遍历序列。根据这两个子序列,在先序序列中找到对应的子序列,左子序列的第一个结点为左子树的根结点,右子序列的第一个结点为右子树的根结点。对左右子树,在反复利用这个方法,最终根据先序序列和中序序列能唯一地确定出一棵二叉树。原创 2023-10-25 21:23:00 · 182 阅读 · 3 评论 -
【malloc详解】| malloc是什么意思以及如何使用
在malloc函数分配好内存空间之后,这个函数将返回指向该内存块的起始位置,即指针。新分配的内存若没有初始化,则那么就是随机值。如果malloc中参数的size为0,那么分配空间将取决于该特定的库实现,它可能是也可能不是空指针,但是该空指针(也就是野指针)是不能被解引用的。原创 2023-10-25 11:50:25 · 414 阅读 · 0 评论