数据结构
文章平均质量分 81
Gay~
Those times you get up early you work hard,Those times you stay up late and you word hard,Those times when you don't feel like working,you too tired,you don't want to push yourself,but you do it anyway,That is actually the dream,That's the dream,it's not the destnation,it's the journey.
展开
-
链式二叉树
思路:首先是根节点先进队列,访问这个根节点,然后根节点出队列,在节点出队列的同时判断这个节点的左孩子节点是否为空,不为空就入队列,为空则不入,再判断右孩子节点是否为空,不为空就入队列,否则不入,循环以上的动作(根节点出队列的同时把左右孩子(不为空)的带进队列)当这个队列为空的时候,就证明这棵树遍历完了。原创 2023-03-31 01:04:38 · 693 阅读 · 8 评论 -
二叉树(堆)
heap 是一个抽象的数据结构,也可以说堆是逻辑上的数据结构,是我们人为想象出来的一种数据结构,并不是一个物理上真实存在的数据结构,堆的底层其实是用数组来实现的。heap 其实有很多种实现方式,但是面试最常考的,也是最经典的,就是 binary heap 二叉堆,也就是用一棵完全二叉树来实现的。那这颗完全二叉树怎么实现呢?其实它并没有那么难,底层就是用一个动态开辟的数组来实现的。那是不是所有的二叉树都可以用数组来存储呢?原创 2023-03-27 00:44:38 · 1750 阅读 · 7 评论 -
栈和队列(stack和queue)
栈 (Stack)是一种线性存储结构,它具有如下特点: 栈中的数据元素遵守”后进先出” (First In Last Out)的原则,简称FILO结构。队列(Queue)也是一种线性的存储结构,它具有如下特点: 队列中的数据元素遵守”先进先出” (First In First Out)的原则,简称FIFO结构。原创 2023-03-20 01:00:25 · 1289 阅读 · 9 评论 -
双向带头循环链表(增删查改)
大家有没有发现上一期的单链表结构在尾插和中间插入的时候会使用得非常的难受呢?中间插入需要额外定义一个指针保存插入位置的前一个位置的地址,尾插又需要从头开始一直找到最后才能找到尾部再插入,归根到底都是因为单链表不能往回找上一个结点,所以今天给大家分享一个结构设计得更好的链表:双向带头循环链表。双向链表,顾名思义就是既能往后找下一个结点,又能往前找上一个结点的链表,那么需要怎么设计这个结构呢?其实很简单,只需要在结点的结构体里面多加一个指向前一个结点的指针就行了。下面我们就来逐步地实现这个双向链表。原创 2023-03-14 23:49:16 · 686 阅读 · 3 评论 -
单链表(增删查改)
单链表是一种链式存取的数据结构,,链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。以“结点的序列”表示的线性表称作线性链表(单链表),单链表是链式存取的结构。简单来说单链表就是一个一个的节点链接起来的链式结构,每个节点里面存储着一个数据和与它链接的下一个节点的(指针)地址。(注意,每一个节点都是同一种结构体类型)原创 2023-03-07 16:38:20 · 1175 阅读 · 4 评论 -
顺序表(增删查改)
顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。换句话说就是一个动态开辟的数组,然后用一个结构体来封装这一个动态数组,再增加两个结构体成员记录数组中保存数据的情况。原创 2023-03-01 23:12:43 · 785 阅读 · 4 评论 -
时间复杂度与空间复杂度
一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法的时间复杂度。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。实际中我们计算时间复杂度时,我们其实并不一定要计算精确的执行次数,而只需要大概执行次数(即最高阶的数量级),那么这里我们使用大O的渐进表示法。空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。原创 2023-02-22 14:22:00 · 539 阅读 · 2 评论