数据结构
文章平均质量分 76
Tudoc
小白一枚,请多多之处我的错误,我定当铭记,加以改正
展开
-
堆排序(c++)
堆排序是选择排序的一种堆排序只需要一个记录大小的辅助空间,每个待排序的记录只需要一个空间大小即可堆的定义如下: n个元素的序列{k1,k2,…,kn}当且仅当满足以下关系时,称之为堆:用一维数组来存储元素,可以将对应的一维数组看成是一个完全二叉树,则堆的含义证明:完全二叉树中的所有非终端结点的值均不小于(或不大于)其左右孩子结点的值也就是,若序列{k1,k2,…,kn}是堆,则堆顶元素必为序列中的n个元素的最大(最小)值,如下:{96,83,27,38,11,9}图上对应的红标代表用于存储的原创 2020-11-14 23:20:54 · 389 阅读 · 0 评论 -
使用快慢指针判断链表是否有环
有时候在面试中可能会遇到叫我们判断链表中是否有环的问题,这个问题的解决方法也很多,这里我记录一下比较简单的使用快慢指针的方法:使用快慢指针是指: 设置两个指针,一快一慢,快指的是每次移动两步,慢指针每次只移动一步,如果在这个过程中没有环,则快慢指针永远不会相等,快指针会移动到末尾null;相反,如果有环,则快指针一定是先进入环中,这时候慢指针也会进入环,由于快指针移动步长大于慢指针,所以两者一定会在某个时间点相遇,slow == fast。具体算法如下://采用快慢指针的方法判断链表是否有环//定义原创 2020-11-06 10:08:08 · 691 阅读 · 0 评论 -
双向链表
一般我们使用的是单链表,亦即只有一个指针域next指向下一个结点,但是有时候我们需要找一个结点的上一个结点,这时候就需要遍历整个链表,时间复杂度较大,所以就有了双向链表:双向链表只是比单链表多了一个前向指针域prior,指向上一个结点:typedef struct doublelist { struct doublelist * prior; int data; struct doublelist * next;}dobleline, *dPtr;对双链表的插入也比较简单,进行头插法,关键是原创 2020-11-06 09:38:42 · 169 阅读 · 0 评论 -
c++实现的LRU算法
最近面试遇到不少自己不会的面试题,为了防止以后再遇到,所以记录下来这次遇到的是LRU算法的实现,LRU是用于内存管理的一种页面置出算法,意为最近最少使用,用于将内存中经常不适用的页面置出内存,放入到外存或者对换区,使得其他可使用的页面进入内存主要的操作是get/put,这篇实现完全照抄于博客:博客所有的代码都没怎么改变,主要是我将自己的理解写在上面并做了一些测试,感兴趣的可以去大佬的博客,我这里主要是做一下记录,不是原创,如果有涉及到侵权请作者联系删除,下面贴代码:class LRUCache {转载 2020-10-22 09:40:51 · 395 阅读 · 0 评论 -
数据结构之稀疏矩阵的三元组顺序表储存以及转置
今天学习了矩阵的压缩存储,主要是特殊矩阵和稀疏矩阵的压缩储存,特殊矩阵包括对称、对角、上下三角矩阵,实现起来比较方便,这里我主要实现了一遍稀疏矩阵的三元组顺序表存储实现以及两种矩阵转置方法。稀疏矩阵稀疏矩阵一直没有一个明确的定义,大概的解释就是矩阵中的非零元分布不是规律的,矩阵中非零元的个数占整个矩阵元个数的比例,该比例成为稀疏因子,只要稀疏因子小于等于0.05,则该矩阵就可叫做稀疏矩阵三元...原创 2020-05-02 21:45:37 · 7432 阅读 · 3 评论