随笔分类 -  数据结构

利用二叉树求表达式的值
摘要:利用二叉树求表达式的值,首先要注意表达式中先乘除后加减的运算顺序,所以在建立树的过程中,就要将加减尽量作为根节点,最后一个加减号作为根节点。建完树之后是运算过程,采用树的后序遍历来运算。 二叉树的节点结构,其中值的类型用char型 下面是运算过程 最后要记得将新建的二叉树销毁 阅读全文
posted @ 2018-08-22 15:51 Mini_Coconut 阅读(4020) 评论(0) 推荐(0)
判断链表是否有环
摘要:主要利用快慢指针来解答,可以判断链表中是否有环,也可以找出链表中环的入口。 (1)判断链表中是否有环 新建两个指针,一快一慢,开始都指向头结点,一般快指针的速度是慢指针的两倍。这样如果快慢指针相遇,那么链表中一定有环。 (2)找出环的入口 同样用快慢指针处理,不过处理方式有所改变。当第一次快慢指针相 阅读全文
posted @ 2018-08-16 21:52 Mini_Coconut 阅读(212) 评论(0) 推荐(0)
如何判断图的连通
摘要:判断图是否连通,可用dfs和bfs遍历图算法,注意点数目较多,又是稀疏图的话,最后使用邻接表的方法存储。另外推荐采用的是并查集的方法。初始化时将每个节点看作一个集合,则每给出一条边即把两个集合合并。最后遍历所有点,有几个集合便有几个连通分量,若只有一个集合说明图连通。并查集方法通常情况下时间效率较高 阅读全文
posted @ 2018-08-15 23:00 Mini_Coconut 阅读(11318) 评论(0) 推荐(1)
图的DFS与BFS
摘要:1.DFS 深度优先搜索在搜索过程中访问某个顶点后,需要递归地访问此顶点的所有未访问过的相邻顶点。 (1)递归实现 (2)也可以用非递归实现,借助于栈的数据结构 其中visited代表着每个节点是否被访问,一般定义成全局的数组。也有将visited定义为局部的数组,作为函数参数引用传递的。 2、BF 阅读全文
posted @ 2018-08-15 22:40 Mini_Coconut 阅读(217) 评论(0) 推荐(0)
关于优先队列的总结II
摘要:优先队列这个数据结构还是很有用的,可以帮我们解决很多棘手的排序的问题,所以再来细细看一下, priority_queue<Type, Container, Functional> Type为数据类型, Container为保存数据的容器,Functional为元素比较方式。 如果不写后两个参数,那么 阅读全文
posted @ 2018-08-04 23:15 Mini_Coconut 阅读(208) 评论(0) 推荐(0)
STL中的空间配置器
摘要:这里我只是简要的总结下STL中的空间配置器的知识。 (一)为什么需要空间配置器 1、内存碎片问题:在软件开发,程序设计中,我们不免因为程序需求,使用很多的小块内存(基本类型以及小内存的自定义类型)。在程序中不断动态申请,释放。 内碎片:因为内存对齐/访问效率(CPU取址次数)而产生 如 用户需要3字 阅读全文
posted @ 2018-07-21 23:22 Mini_Coconut 阅读(139) 评论(0) 推荐(0)
优先级队列的总结
摘要:优先级队列是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素 每个元素的优先级根据问题的要求而定。当从优先级队列中删除一个元素时,可能出现多个元素具有相同的优先权。在这种情况下,把这些具有相同优先权的元素视为一个先来先服务的队列,按他们的入队顺序进行先后处理。 优先队列是一种 阅读全文
posted @ 2018-07-14 23:08 Mini_Coconut 阅读(2016) 评论(0) 推荐(0)
并查集-判断图的连通
摘要:来看一个实例,杭电1232畅通工程 首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的。最后要解决的是整幅图的连通性问题。比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共有几个连通分支,也就是被分成了几个互相独立的块。像畅通工程这题,问还需要修几 阅读全文
posted @ 2018-07-03 22:25 Mini_Coconut 阅读(4270) 评论(0) 推荐(0)
二叉搜索树BST
摘要:二叉搜索树,也称有序二叉树,排序二叉树,是指一棵空树或者具有下列性质的二叉树: 1. 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 2. 若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 3. 任意节点的左、右子树也分别为二叉查找树。 4. 没有键值相等的 阅读全文
posted @ 2018-06-18 22:41 Mini_Coconut 阅读(217) 评论(0) 推荐(0)
关于string类中find函数的讲解
摘要:以下所讲的所有的string查找函数,都有唯一的返回类型,那就是size_type,即一个无符号整数(按打印出来的算)。若查找成功,返回按查找规则找到的第一个字符或子串的位置;若查找失败,返回npos,即-1(打印出来为4294967295)。 (1)string::find函数 (2)string 阅读全文
posted @ 2018-05-01 22:17 Mini_Coconut 阅读(11230) 评论(0) 推荐(1)
初始化链表节点
摘要:上一篇我们介绍了链表的建立,遍历,插入和删除等操作,有一个问题就是在插入操作时,第二个参数是一个ListNode*的节点,那么我们在调用的时候如何初始化一个单独的链表节点呢,答案就是定义一个初始化函数 默认参数是0和NULL 如果看到别的方法,会继续添加,也欢迎大家留言 阅读全文
posted @ 2018-05-01 17:34 Mini_Coconut 阅读(1635) 评论(0) 推荐(0)
链表的基本用法
摘要:链表概念的引入 创建无序链表,依次输入各节点数据,以-1结束。循环读入数据,若数据不为-1,就申请一个新节点,将数据赋给新节点,在链表尾部加上该节点。加节点的时候,要分情况,(1)首节点(2)中间节点*(3)尾节点 输出链表,函数通过头结点传参,这里要注意尽量使用const修饰,避免函数修改节点数据 阅读全文
posted @ 2018-04-29 21:13 Mini_Coconut 阅读(3255) 评论(0) 推荐(0)
基类指针和派生类指针
摘要:1 基类指针指向基类对象(正常使用) 2 派生类指针指向派生类对象(正常使用,不管是不是虚函数,调用的都是派生类的函数) 3 基类指针指向派生类对象(多态的体现,虚函数的话调用的是派生类的,非虚函数的话调用的是基类的) 指针不能使用只存在于派生类而不存在于基类中的元素,也就是指向的是派生类中基类的部 阅读全文
posted @ 2018-03-26 18:11 Mini_Coconut 阅读(3071) 评论(0) 推荐(0)