
数据结构有关知识点
文章平均质量分 63
jimofanhua0000
这个作者很懒,什么都没留下…
展开
-
共享栈
一、为什么使用共享栈?我们都知道使用过程中我们给每个栈分配足够的空间是不太现实的,使用栈的时候,我们也不能保证栈有足够的空间,另外,栈是一个动态的存储结构,各个栈的实际大小在使用的过程中都会发生变化的,有时候其中一个已经上溢了,而另外一个还没用怎么使用。这样必定会造成空间的利用率降低。二、定义共享栈,即是两个栈使用同一段存储空间。第一个栈从数组头开始存储,第二个栈从数组尾开转载 2016-03-18 15:26:27 · 8622 阅读 · 0 评论 -
C++ STL中容器的使用全面总结
一、容器的定义 在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法。二、容器的种类 1、顺序容器:是一种各元素之间有顺序关系的线性表,是一种线性结构的可序群集。顺序性容器中的每个元素均有固定的位置,除非用删除或插入的操原创 2017-04-19 21:44:17 · 67379 阅读 · 5 评论 -
C++栈和队列
使用标准库的栈和队列时,先包含相关的头文件#include#include定义栈如下:stack stk;定义队列如下:queue q;栈提供了如下的操作[cpp] view plain copys.empty() 如果栈为空返回true,否则返回false s转载 2017-05-03 17:58:05 · 272 阅读 · 0 评论 -
map容器对象插入数据的4种方式讲解
map容器对象插入数据的4种方式讲解map容器对象插入数据的4种方式#include #include #include #include using namespace std;int main(){ mapint, string> Employee; //通过键值赋值转载 2017-05-03 10:11:04 · 1508 阅读 · 0 评论 -
数据结构———树
一、名词解释 树这个数据结构用到了递归的概念:树的子树还是树;度:节点的子树个数;树的度:树中任意节点的度的最大值;兄弟:两节点的parent相同;层:根在第一层,以此类推;高度:叶子节点的高度为1,根节点高度最高;有序树:树中各个节点是有次序的;森林:多个树组成;二、树的表示方法转载 2017-05-02 17:20:50 · 838 阅读 · 0 评论 -
二叉树三种遍历方式的六种实现方法
一、基本概念每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。性质:1、非空二叉树的第n层上至多有2^(n-1)个元素。2、深度为h的二叉树至多有2^h-1个结点。3、对任何一棵二叉树T,如果其终端结点数(即叶子结点数)为n0,度为2的结点数为n2,则n0 = n2 + 1。满二叉树:所有终端都在同一层次,且非终端结点的度数为2。原创 2017-05-01 23:03:27 · 21272 阅读 · 4 评论 -
字符串替换空格题目
题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。刚看到题目时我的想法就是新建一个字符数组,然后遍历旧的字符串时判断一下,如果不为空格字符就直接复制给新字符数组,否则就讲%20复制给新字符数组,但是假如仅仅让在原来的字符串上做替换的话,又该如何做呢。测试通过代码如下:class原创 2017-03-20 17:28:59 · 360 阅读 · 0 评论 -
关于mapC++ map的基本操作和使用
1、C++ map的基本操作和使用Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数;mapmapstring; mapmapint;mapmapstring; mapmapchar;mapmapchar; mapmapint;2. map添加数据;m转载 2016-03-11 17:17:13 · 874 阅读 · 0 评论 -
vector与list区别
1、vector为存储的对象分配一块连续的地址空间,因此对vector中的元素随机访问效率很高。在vector中插入或者删除某个元素,需要将现有元素进行复制,移动。如果vector中存储的对象很大,或者构造函数复杂,则在对现有元素进行拷贝时开销较大,因为拷贝对象要调用拷贝构造函数。对于简单的小对象,vector的效率优于list。vector在每次扩张容量的时候,将容量扩展2倍,这样对于小对象来说原创 2016-03-11 17:09:53 · 375 阅读 · 0 评论 -
计算数组长度引发的一些问题
今天一个朋友问了我他的程序怎么输出的结果不对,对于一个简单的求数组长度的小问题竟然发现还有那么多门道,程序如下:void merge(int *A, int p, int q, int r){ int n1 = q-p+1; int n2 = r-q; int* L = new int(n1+1); int* R = new int(n2+1); for(int i=0; i<n1原创 2016-03-21 17:16:18 · 586 阅读 · 0 评论 -
邻接表/邻接矩阵
邻接表一、邻接表邻接表是图的一种链式存储结构。邻接表中,对图中每个顶点建立一个单链表,第i个单链表中的结点表示依附于顶点Vi的边(对有向图是以顶点Vi为尾的弧)。二、无向图的邻接表三、有向图的邻接表和逆邻接表(一)在有向图的邻接表中,第i个单链表链接的边都是顶点i发出的边。(二)为了求第i个顶点的入度,需要遍历整个邻接表。因此转载 2016-03-18 15:47:27 · 3874 阅读 · 0 评论 -
B树
1970年,R.Bayer和E.mccreight提出了一种适用于外查找的树,它是一种平衡的多叉树,称为B树(或B-树、B_树)。一棵m阶B树(balanced tree of order m)是一棵平衡的m路搜索树。它或者是空树,或者是满足下列性质的树:1、根结点至少有两个子女;2、每个非根节点所包含的关键字个数 j 满足:┌m/2┐ - 1 3、除根结点以外的所有结点(不包括叶转载 2016-03-18 15:41:59 · 340 阅读 · 0 评论 -
层次遍历二叉树-三种不同的方法
给定一棵二叉树,要求进行分层遍历,每层的节点值单独打印一行,下图给出事例结构:对此二叉树遍历的结果应该是:1,2 , 34, 5, 67, 8第一种方法,就是利用递归的方法,按层进行打印,我们把根节点当做第0层,之后层次依次增加,如果我们想打印第二层怎么办呢,利用递归的代码如下:int print_at_level(Tree T,转载 2017-06-29 21:51:53 · 1083 阅读 · 0 评论