数据结构
文章平均质量分 89
一起来学数据结构
2023框框
这个作者很懒,什么都没留下…
展开
-
什么是跳表?
skiplist本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的,可以作为key或者key/value的查找模型。那么相比而言它的优势是什么的呢?这么等我们学习完它的细节实现,我们再来对比。skiplist是由发明的,最早出现于他在1990年发表的论文**《Skip Lists: A对细节感兴趣的同学可以下载论文原文来阅读。skiplist,顾名思义,首先它是一个list。实际上,它是在有序链表的基础上发展起来的。如果是一。原创 2023-04-10 22:09:11 · 441 阅读 · 0 评论 -
AVL树 平衡二叉搜索树
int _bf;//平衡因子 };int _bf;//平衡因子 };AVL树的接口private :public :} // 中序遍历 void InorderR() {} //右旋转 void RotateR(Node * parent) {} // 左单旋 void RotateL(Node * parent) {原创 2022-10-03 17:14:54 · 496 阅读 · 0 评论 -
二叉搜索树
现代写法,利用传参时调用用拷贝构造函数初始化tree,swap函数交换两个根节点的指针,tree调用析构函数时释放交换后根节点指针的资源,原理就是更好的复用。由于二叉搜索树中,每个结点左子树上所有结点的值都小于该结点的值,右子树上所有结点的值都大于该结点的值,因此对二叉搜索树进行中序遍历后,得到的是升序序列。注意:这里的传引用参数,用的非常秀,对root的修改就等于对父节点的右子树指针或者左子树指针的修改。我们使用替换法,找到一个满足大于cur的所有左子树,小于cur的右子树的A节点,cur与A节点替换。原创 2022-09-29 15:13:03 · 369 阅读 · 0 评论 -
数据结构—顺序表的缺陷—单链表(详解)及接口的实现
文章目录顺序表的缺陷简单的介绍链表最简单的单链表顺序表的缺陷1.空间不够了需要增容,增容是要付出代价例如:增容时有可能不在原地址后增容2.避免频繁扩容,我们满了基本都是扩2倍,可能就会导致一定的空间浪费3.顺序表要求数据从开始位置连续存储那么我们在头部或者中间位置插入删除数据就需要挪动数据,效率不高;针对顺序表的缺陷,就设计出了链表,接下来我给大家介绍链表简单的介绍链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点原创 2021-10-23 00:54:46 · 474 阅读 · 2 评论 -
数据结构-顺序表+缺陷+LeetCode练习题
文章目录顺序表+练习题1.线性表2.顺序表接口声明力扣OJ题1. 删除有序数组中的重复项2.移除元素3.选择数组4.合并两数组5.数组形式的整数加法顺序表+练习题1.线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。2.顺序表顺序表是用一段物原创 2021-10-14 18:05:27 · 347 阅读 · 1 评论 -
数据结构——队列——一篇就够了
文章目录队列队列的概念及结构队列的实现队列队列的概念及结构队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头队列的实现队列可以数组也可以链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低(如果数组要出数据,那么就要挪动数据)。...原创 2021-11-08 13:56:26 · 829 阅读 · 0 评论 -
数据结构——一遍轻松解决栈性结构
文章目录栈栈1.1栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出**LIFO(Last In First Out)**的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。何为后进先出?...原创 2021-10-31 12:34:36 · 151 阅读 · 0 评论 -
(详解)数据结构——带头双向循环链表——顺序表与链表的区别——即附带CPU高速缓存的知识
文章目录链表的介绍1.带头双向循环链表的初始化初始化函数接口2.销毁链表3.打印链表4.查找元素5.删除指定节点6.在指定结点前新增一个节点7.头插8.头删9.尾插10.尾删链表判空总结:顺序表与链表的优缺点链表的介绍链表的结构一共有八种:带头单向循环链表、带头单向非循环链表、带头双向循环链表、带头双向非循环链表、无头单向循环链表、无头单向非循环链表、无头双向循环链表、无头双向非循环链表。 在这八种结构中,我们只挑两种来进行刨析,即无头单向非循环链表和带头双向循环链表。 无头单向非循环链表:结构原创 2021-10-30 13:15:14 · 201 阅读 · 0 评论 -
掌握链表——环形问题(详解证明过程)及练习题
文章目录什么是链表的环?判断链表是否有环什么是链表的环?若一个链表带环,那么用指针一直顺着链表遍历,最终会回到某个地方。链表带环不是一个正常的链表,因为他会造成死循环。判断链表是否有环思路: 我们可以定义两个指针(快慢指针),两个指针均从表头开始同时遍历链表,快指针一次走两步,慢指针一次走一步。如果链表带环,那么快慢指针一定会相遇,否则快指针会先遍历完链表(遇到NULL)。struct ListNode { int val; struct ListNode *next;};bool has原创 2021-10-27 00:17:19 · 371 阅读 · 0 评论