数据结构
文章平均质量分 81
_yiyi_
这个作者很懒,什么都没留下…
展开
-
搜索二叉树
二叉搜索树又称为二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:二叉搜索树的查找二叉搜索树的插入定义二叉搜索树的结点实现搜索二叉树原创 2022-06-18 17:36:16 · 2634 阅读 · 0 评论 -
二叉树以及堆讲解
二叉树和堆的一些讲解原创 2022-01-11 23:30:13 · 777 阅读 · 0 评论 -
栈和队列的实现
栈和队列栈栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一段称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则。**压栈:**栈的插入操作叫做压栈,入数据在栈顶**出栈:**栈的删除操作叫做出栈,出数据也在栈顶我们可以把栈想象成一个桶,只能从桶口放东西进去,要想取出东西也只能从桶口里取出来。所以先放进去的会后取出来。如果想要拿到栈底的数据就必须把它前面的数据全部取出,才能取到栈底的数据。栈的实现栈的实现一般可以使用数组或链表实现,相对而言数原创 2022-01-09 15:07:51 · 231 阅读 · 0 评论 -
C语言:带头双向环形链表
双向循环链表上一次我们讲了单向无头非循环链表的实现,单向无头非循环链表的特点是:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构。而带头双向循环链表则恰恰与无头单向非循环链表相反,它的结构最复杂,一般用来单独存储数据。这个结构虽然复杂,但是使用单吗实现后会发现,这个结构用起来很简单。结构示意图带头双向循环链表在逻辑上大概就是这样的一个样子,链表的最后一个节点的后继指向的是头结点。而头结点的前驱则是指向链表的最后一个结点。所以,一个空的带头双向循环链表的逻辑结构应该是这样的:原创 2021-11-25 01:00:48 · 839 阅读 · 0 评论 -
C语言数据结构单链表链表
数据结构–单链表学习了顺序表,我们发现顺序表在向里面存放数据的时候很麻烦,比如我们要使用头插法存放一个数据到顺序表的时候,我们要将整个表都向后挪一位,这个操作就让人很难受。那么有没有一种结构可以让我们存放数据的操作变得简单一些呢?这就要用到线性结构的另一种–链表链表的概念及结构链表是一种物理存储结构上非连续、非顺序的的存储结构,数据元素的国际顺序是通过链表中的指针链接次序实现的。如下图:注意:从上图可以看出,链式结构在逻辑上是连续的,但是在物理上不一定连续现实中的结点一般都是从堆上申请出来的原创 2021-11-15 01:21:41 · 988 阅读 · 0 评论 -
C语言:顺序表的实现
标题C语言实现顺序表线性表的定义线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串线性表在逻辑上是线性结构,也就是说是一条直线。但在物理结构上线性表并不一定是连续的空间,线性表在物理上存储时,通常释疑数组和链式结构的形式存储。顺序表的定义顺序表时用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。可分为静态顺序表和动态顺序表1、静态顺序表:使用定长数组存储元原创 2021-11-06 00:47:20 · 816 阅读 · 0 评论 -
算法的时间复杂度和空间复杂度
【C语言】数据结构入门之算法的时间复杂度和空间复杂度我们在写一个程序的时候,对于同一个问题往往有多种方法去解决。那么在有许多种方法的时候应该怎么去选择呢?时候就需要我们从时间复杂度和空间复杂度这两个方面去对比,然后选出最优的解。算法的效率我们都知道,不同的算法是存在优劣之分的,那么应该怎么去衡量一个算法的好坏呢?算法在编写成可执行程序之后,运行时需要耗费时间资源和内存资源。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。时间复杂度主要衡量一个算法的运行快慢,而空间原创 2021-10-25 12:59:08 · 237 阅读 · 0 评论