
数据结构与算法
夏虫爱语冰
这个作者很懒,什么都没留下…
展开
-
利用逆波兰式(后缀表达式)求解带括号数学表达式的值
一、前言本文主要记录笔者在学习C++适配器相关内容时解决的一道练习题,亦是有抛砖引玉之意~二、正文一般我们常用的数学表达式形式,像(a+b)*c等把加减乘除等运算符放在中间的称呼为中缀表达式。但是中缀表达式的运算顺序受括号影响很大,那有没有可以无视的括号的表达形式呢?答案是肯定的,那就是逆波兰表达式,也叫后缀表达式。引用百度百科的定义:一个表达式E的后缀形式可以如下定义:(1)如果...原创 2020-04-10 11:38:19 · 2213 阅读 · 0 评论 -
设计一个简单的LRU缓存结构(C++实现)
LRU是Least Recently Used的缩写,中文意思是“最近最少使用”,常用于页面置换算法,是为虚拟页式存储管理服务的。LRU 算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。也就是说,当限定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。LRU实现过程Created with Raphaël 2.2.0开始新元素缓存区已满?去掉最近最少使用的元素写入新元素到缓存区结束直接写入新元素到缓存区yesno主要使用哈希表和链表,其中哈希表用于查找原创 2020-10-07 15:38:24 · 848 阅读 · 0 评论 -
二叉树之二叉查找(搜索)树的查找、插入、删除及遍历(C++实现)
目录一、认识二叉树查找(搜寻或搜索)树二、二叉查找树的查找实现三、二叉查找树的插入实现四、二叉查找树的删除实现一、认识二叉树查找(搜寻或搜索)树二叉查找树1(英语:Binary Search Tree),也称为二叉搜索树、有序二叉树(ordered binary tree)或排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若任意节点的右子树不空,则右子树上所有节点的值均大于或等于它的根节原创 2020-08-18 22:29:31 · 8157 阅读 · 0 评论 -
二叉树之层序遍历C++实现(部分C++11)
上一篇文章主要讲了二叉树的前中后序遍历算法的递归非递归实现,本文介绍二叉树的另一种遍历方式——层序遍历。层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第二层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程。具体使用一个先进先出的队列来实现,基本过程为:根节点入队,然后:从队列中取出一个节点访问该节点若该节点所指节点的左、右子树非空,则将其左右子树顺序入队首先实现一个队列,采用链式存储(队列的链式存储结构,其实就是线性表的原创 2020-08-10 21:12:43 · 518 阅读 · 0 评论 -
二叉树之先(前)序、中序、后序遍历的递归和非递归C++实现(部分C++11)
目录一、认识二叉树二、二叉树的先(前)序、中序、后序遍历的递归实现三、二叉树的先(前)序、中序、后序遍历的非递归实现一、认识二叉树在进入本文之前先要对二叉树有一定的了解,引用中文维基百科的说法:二叉树是计算机科学中一种数据结构。在计算机科学中,二叉树(英语:Binary tree)是每个节点最多只有两个分支(即不存在分支度大于2的节点)的树结构。通常分支被称作“左子树”或“右子树”。二叉树的分支具有左右次序,不能随意颠倒。二叉树通常作为数据结构应用,典型用法是对节点定义一个标记函数,将一些值与每原创 2020-08-09 10:40:16 · 515 阅读 · 1 评论