数据结构与算法
文章平均质量分 96
数据结构与算法
娃娃丢没有坏心思
没有简介,不行吗?
展开
-
初级数据结构(七)——二叉树
链表形式的二叉树在逻辑上相对于顺序表尤其复杂,当然也比顺序表更为灵活。链表形式的二叉树任何操作,本质都是有条件地遍历各个节点。而熟练掌握递归算法对遍历链表形式二叉树尤为重要。二叉树有三种常用遍历顺序,称为前序、中序和后序。前中后序指的是访问节点中数据的次序。除此之外还有层序遍历。本文主要围绕这四种遍历方式展开讲解。可以说弄清楚这四种遍历方式,并在需要时选择其中最佳遍历方式,二叉树也就可以随意把玩了。原创 2023-12-22 18:16:49 · 4907 阅读 · 51 评论 -
初级数据结构(六)——堆
堆结构属于完全二叉树的范畴,除了满足完全二叉树的限制之外,还满足所有父节点数据的值均大于(或小于)子节点。父节点大于子节点的堆称为大堆或大根堆,反之则称为小堆或小根堆。原创 2023-12-17 21:41:40 · 2230 阅读 · 30 评论 -
初级数据结构(五)——树和二叉树的概念
自然界中的树由根部开始向上生长,随机长出分支,分支之上又可长出分支,层层递进,直至长出叶子则此分支结束。数据结构中“树”的概念便是借鉴大自然中的树,将下图垂直镜像翻转便是如此,只是在画结构图时往往更习惯由上向下画。它从根节点开始不断长出分支,直至终端。与自然中的树不同点在于,随着数据后续插入,树结构的叶子节点也可能变为分支节点。原创 2023-12-16 19:43:53 · 3625 阅读 · 30 评论 -
初级数据结构(四)——队列
栈结构特性为LIFO ,队列则是与之相反的先入先出,后入后出,也称为 FIFO ( Fist In Fist Out )。队列与栈的区别只在于弹出顺序,其余完全一致。但是,基于队列的特性,如果选用顺序表实现,则需要不断腾挪数据以填充弹出的头部位置,因此这里最好选用链表来实现以减小计算机资源的开销。原创 2023-12-13 19:09:37 · 1394 阅读 · 36 评论 -
初级数据结构(三)——栈
基于某些需求(如通过程序判断记录数学公式字符串的大中小括号是否配对、计算字符串中的数学公式的值、甚至最基本的数组倒序等),程序的数据处理需要用到后入先出的特性,对这类数据进行操作的结构就称为栈结构。原创 2023-12-13 17:48:07 · 1346 阅读 · 17 评论 -
初级数据结构(二)——链表
顺序表的劣势在于,开辟空间并非随需开辟,释放空间也显得不那么灵活。如果顺序表做到每次增加数据便拓展空间,删除数据便回收空间,基于 realloc 可能异地开辟的特点,搬运数据的时间复杂度为 O(N) 。如果顺序表的长度是几千万乃至几亿,每添加或者删除一个数据,其延迟是难以忽略的。如果有一种储存方式可以解决上述问题,做到每一个数据的空间都按需开辟,且按需释放,那么在最极端的情况下,它甚至可以节省近一半存储空间。原创 2023-12-07 04:39:47 · 2115 阅读 · 35 评论 -
初级数据结构(一)——顺序表
现实中数据记录一般都记录在表格中,如进货单、菜单等,它们的最大特点就是有序。表述中可以用第一项、第二项、第 n 项来描述表格中某个数据或者某串数据。在 C 语言中,数组的特点恰好匹配此功能。由于数组在内存中的储存方式就如同列表依序排布,对数组可以用 arr[n] 或者 *(arr+n) 来迅速获得第 n-1 项数据。再加上而且数组是 C 语言的原生类型,创建数组极其便利,作为有序数据的载体着实是不二之选。原创 2023-12-05 20:48:50 · 3362 阅读 · 39 评论