
数据结构基础知识、概念
文章平均质量分 71
以初步学习数据结构基础知识为主旨,总结重要知识。
阿庆i code
这个作者很懒,什么都没留下…
展开
-
考研中常见的算法-逆置
本篇文章主要讲解了考研中常见的一种算法逆置和循环移动算法原创 2024-02-04 18:08:28 · 737 阅读 · 0 评论 -
中缀转后缀
首先,我们可以看到,在这个算式中,根据运算规则最先运算的是 括号中的内容,也就是 (a + b), 根据概念,此时 A = a、 B = b、 O = +,AOB=>ABO=>ab+c - (d/c),根据运算规则和优先级,我们可以发现接下来要运算的是 * , 此时A = (ab+)、 B = c 、O = * , AOB => ABO => ab+c。紧接着,此式变成了 (ab+c*) - (d/c),根据运算规则和优先级,我们可以发现接下来要运算的是 / ,那么此时 A=d、B=c、O=/。原创 2024-02-03 21:56:09 · 489 阅读 · 0 评论 -
数据结构—基础知识(16):哈夫曼编码
在进行数据压缩时,为了使压缩后的数据文件尽可能短,可采用不定长编码。其基本思想是:为出现次数较多的字符编以较短的编码。为确保对数据文件进行有效的压缩文件和对压缩文件进行正确的解码,可以利用哈夫曼树来设计二进制编码。原创 2024-02-02 15:48:48 · 944 阅读 · 0 评论 -
数据结构—基础知识(15):哈夫曼树
哈夫曼树的基本概念又称最优树,是一类带权路径长度最短的树,在实际中有广泛的用途。哈夫曼树的定义,涉及路径、路径长度、权等概念,下面先给出这些概念的定义,然后再介绍哈夫曼树例如,下图中所示的3棵二叉树,都含4个叶子结点a、b、c、d,分别带权7、5、2、4,他们的带权路径长度分别为哈夫曼树的构造算法。原创 2024-02-01 17:52:27 · 3019 阅读 · 0 评论 -
中缀转前缀
综上,我们可以看出,其实中缀转前缀,就是根据运算规则,找到我们表达式中最先计算的两项和运算符,然后,将其运算符放前边,并且要保持 A 和 B 的相对顺序不变,依次执行,直到转化成前缀表达式。 ②:遇到运算符,中转前是 将栈中优先级高的弹出。中转后是 将栈中优先级高于和等于的弹出。 ①:中转前是依次 将字符 前放,中转后是依次将字符 后放。原创 2024-01-31 20:28:17 · 549 阅读 · 0 评论 -
数据结构—栈实现前缀表达式的计算
思路:表达式存储在一个字符数组 exp[] 中,从右至左扫描,遇到数值的时候 入栈,遇到运算符的时候 出栈(连续两次)然后拿两个数值 a 和 b 以及运算符 op 进行计算,最后将计算结果再入栈,直到遍历完字符数组为止!原创 2024-01-30 21:58:34 · 974 阅读 · 0 评论 -
数据结构—栈实现后缀表达式的计算
思路:表达式存储在一个字符数组 exp[] 中,遇到数值得时候 入栈,遇到运算符的时候 出栈(连续两次)然后拿两个数值 a 和 b 以及运算符 op 进行计算,最后将计算结果再入栈,直到遍历到字符数组结尾为止!原创 2024-01-29 21:39:10 · 1102 阅读 · 0 评论 -
数据结构—基础知识(14):森林、树与二叉树的转换
加线:将p结点是双亲结点的左孩子,则将p的右孩子,右孩子的右孩子…沿分支找到的所有右孩子,都与p的双亲用线连起来。抹线:将二叉树中根结点与其右孩子连线,及沿右分支搜索到的所有右孩子间连线全部抹掉,使之变成孤立的二叉树。以第一棵树根结点为二叉树的根,再以根结点为轴心,顺时针旋转,构成二叉树型结构。抹线:对每个结点,除了其左孩子外,去除其与其余孩子之间的关系。旋转:以树的根结点为轴心,将整树顺时针转45°。二叉树变树:左孩子右右连双亲,去掉原来右孩线。抹线:抹掉原二叉树中双亲与右孩子之间的连线。原创 2024-01-28 16:30:20 · 1153 阅读 · 0 评论 -
数据结构—基础知识(13):树的存储结构
另一种办法是,把每个结点的孩子结点排列起来,看成是一个线性表,且以单链表做存储结构,则n个结点有n个孩子链表(叶子的孩子链表为空表)。由于树中每个结点可能有多棵子树,则可用多重链表,即每个结点有多个指针域,其中每个指针指向一棵子树的根结点,此时链表中的结点可以有如下图的两种结点格式。这种表示方法中,以一组连续的存储单元存储树的结点,每个结点除了数据域data外,还附设一个parent域用以指示其双亲结点的位置。,则多重链表中的结点是不同构的,其中d为结点的度,degree 域的值同d。原创 2024-01-26 15:53:51 · 802 阅读 · 1 评论 -
数据结构—基础知识(11):二叉树的遍历
是指按某条搜索路径访问树中每个结点,使得每个结点均被访问一次,而且仅被访问一次。由于二叉树是一种非线性结构,每个结点都可能有两棵子树,因而需要寻找一种规律,以便使二叉树上的结点能排列在一个线性队列上,进而便于遍历。由二叉树的递归定义可知,遍历一棵二叉树便要决定对根结点N、左子树L和右子树R的访问顺序。按照先遍历左子树再遍历右子树的原则,常见的遍历次序有。否则,①先序遍历左子树;否则,①先序遍历左子树;算法,其中“序”指的是根结点在何时被访问。先序遍历:ABCDEFGH。后序遍历:DECBHGFA。原创 2024-01-23 17:10:01 · 1993 阅读 · 1 评论 -
数据结构—基础知识(十):树和二叉树(b)
( Binary Tree)是n(n≥0)个结点所构成的集合,它或为空树(n=0);或为非空树,对于非空树T:有且仅有一个称之为根的结点即二叉树中中不存在度大于2的结点其次序不能任意颠倒到二叉树的递归定义表明二叉树或为空,或是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。由于这两棵子树也是二叉树,则由二叉树的定义,它们也可以是空树。由此,二叉树可以有5种基本形态,如下图所示。注:有关树的术语是都适用于二叉树。原创 2024-01-22 16:53:16 · 547 阅读 · 0 评论 -
数据结构—基础知识(九):树和二叉树(a)
(Tree)是n(n≥0)个结点的有限集,它或为空树(n=0);原创 2024-01-21 16:14:50 · 578 阅读 · 1 评论 -
数据结构—基础知识(八):数组
数组:按一定格式排列起来的具有相同类型的数据元素的集合。一维数组:若线性表中的数据元素为非结构的简单元素,则称为一维数组。一位数组的逻辑结构:线性结构。定长的线性表。声明格式:数据类型 变量名称[长度] 例:int num[5]={0,1,2,3,4};二维数组:若一维数组中的数据元素又是一维数组结构,则称为二维数组。声明格式:数据类型 变量名称[长度]原创 2024-01-20 17:10:44 · 693 阅读 · 0 评论 -
数据结构—基础知识(七):队列
队列(queue)是一种先进先出的线性表。它只允许在表的一端进行插入,而在另一端删除元素。允许插入的一端称为队尾(rear),允许删除的一端称为队头(front)。原创 2024-01-19 21:14:50 · 2140 阅读 · 1 评论 -
数据结构—基础知识(六):栈
栈(stack)是限定仅在表尾进行插入或删除操作的线性表。对于栈来说,表尾段有其特殊含义称为栈顶(top),表头段称为栈底(bottom)。栈又称为后进先出(Last In First Out)的线性表,简称为LIFO结构。栈和一般线性表的区别:仅在于运算规则不同。注:在程序设计中,如果需要按照保存数据时相反的顺序来使用数据,则可以利用栈来实现。原创 2024-01-18 22:12:15 · 1254 阅读 · 1 评论 -
数据结构—基础知识(五):线性表(b)链表中基本操作
【算法描述】生成新节点作为头结点,用头指针L指向头结点。头结点的指针域置空。原创 2024-01-16 22:32:52 · 981 阅读 · 1 评论 -
数据结构—基础知识(四):线性表(b)顺序表中基本操作
【算法步骤】Lelem注:C++的初始动态分配语句为C的初始动态分配语句为注意:malloc(m):开辟m字节长度的地址空间,并返回这段空间的首地址。原创 2024-01-13 12:25:25 · 399 阅读 · 0 评论 -
数据结构—基础知识(三):线性表(a)
线性表的定义定义:线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列。(n=0时称为空表)线性表的特点:线性表是一种逻辑结构,表示元素之间一对一的相邻关系。顺序表和链表是指存储结构,两者属于不同层面的概念,因此不要将其混淆。线性表的基本操作:符号“”表示C++语言中的引用调用。原创 2024-01-12 18:25:19 · 1176 阅读 · 0 评论 -
数据结构—基础知识(二):绪论(b)
注意:要区分清楚算法的定义及特性和评价算法优劣的基本标准。时间复杂度和空间复杂度是衡量算法的两个主要指标。算法必须满足的五个重要特性。评价算法优劣的基本标准。1.算法的定义及特性。2.算法的时间复杂度。原创 2024-01-11 13:28:58 · 356 阅读 · 0 评论 -
数据结构—基础知识(一):绪论(a)
抽象数据类型(Abstract Data Type,ADT)数据对象、数据对象上关系的集合以及数据对象的基本操作的集合。1.数据、数据元素、数据项和数据对象。数据类型(Data Type)3.数据类型和抽象数据类型。原创 2024-01-11 13:28:31 · 1059 阅读 · 0 评论