
数据结构
文章平均质量分 64
等待一朵花开
C++
展开
-
循环队列
设计循环队列的原因: 队列的顺序存储结构称为顺序队列,顺序队列实际上是运算受限的顺序表,和顺序表一样,顺序队列也是必须用一个向量空间来存放当前队列中的元素。 入队,出队操作原理: 由于队列的队头和队尾的位置是变化的,因而要设两个指针和分别指示队头和队尾元素在队列中的位置,它们的初始值地队列初始化时均应置为0。入队时将新元素插入所指的位置,然后将加1。出队时,删去所指的元素,然后将加1原创 2016-07-22 21:39:47 · 997 阅读 · 0 评论 -
哈希表的知识点介绍
散列表(HASH TABLE)也叫哈希表,是基于快速存取的角度设计的,也是一种典型的“以空间换时间”的做法。是根据关键码值而直接进行访问的数据结构。它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度,这个映射函数叫散列函数,存放记录的数组叫散列表。hash表既满足了数据的查找方便,同时不占用太多的内容空间,使用也十分方便。 哈希表也有一些缺点它是基于数组的,数组创建后难于扩展某些原创 2016-07-08 09:29:27 · 906 阅读 · 0 评论 -
数据结构之—图
1.图的两种遍历方法: 1) 深度优先搜索遍历 深度优先搜索DFS遍历类似于树的前序遍历。其基本思路是: a) 假设初始状态是图中所有顶点都未曾访问过,则可从图G中任意一顶点v为初始出发点,首先访问出发点v,并将其标记为已访问过。 b) 然后依次从v出发搜索v的每个邻接点w,若w未曾访问过,则以w作为新的出发点出发,继续进行深度优先遍历,直到图中所有和v有路径相通的顶点都被访问到。原创 2016-07-20 16:03:50 · 570 阅读 · 0 评论 -
关于二叉树与树(森林)的知识点详解
1.二叉树的遍历及优缺点: 前序遍历用来实现目录结构的显示。 中序遍历用来做表达式,在编译底层实现的时候,可以实现加减乘数 后序遍历可以用来实现计算目录内的文件,占用的数据大小。 二叉树最复杂的还是删除,这里特别说明一下,就像书中所说的,为了减少算法的运行时间,在一些情况下,实际上对于删除操作一个好的办法就是做一下标记,并不是真实删除,这种方法叫 做懒惰删除(英文:lazy原创 2016-07-08 09:26:57 · 4373 阅读 · 0 评论 -
关于数据结构之树的一些总结
树结构中,结点总数(包括根和叶子)=边数(等于度)+1 1.二叉树 性质1:对任何一颗二叉树T,如果其终端节点数为n0,度为2的节点数为n2,则n0 = n2+1; 性质2:具有n个结点的完全二叉树的深度为|log2 (n)|+1 二叉树进行层次遍历,应借助一个队列,二叉树的先序、中序、后序的非递归遍历需要用到栈。 (1)完全二叉树 一、叶子结点只可能在最大的两原创 2016-07-08 09:20:50 · 1897 阅读 · 0 评论 -
面试中各类二叉树题型的整理
转载来自:http://blog.youkuaiyun.com/walkinginthewind/article/details/7518888 二叉树是一种特殊的树,二叉树是递归定义的,因此,与二叉树相关的题型基本可以用递归的思想解决,当然有些题目非递归解法也应该掌握,如非递归遍历节点等等。 二叉树节点定义如下: struct BinaryTreeNode { int m_nV转载 2016-08-27 16:51:21 · 538 阅读 · 0 评论 -
堆、归并排序
数据结构中的堆,是一颗完全二叉树,以连续地址存储。插入的方式是,先将元素放到vector尾部,然后vector不断和父母节点比较交换,直到找到合适的位置,所以时间复杂度是O(lgN),也就是树的高度。删除第一个元素的方式是,先将最后的元素跟第一个元素交换,然后将最后的元素删除,然后第一个元素再跟两个孩子节点中的一个交换,直到找到合适的位置,所以时间复杂度也是O(lgN)。 其中堆排序就是原创 2016-08-14 16:41:34 · 318 阅读 · 0 评论 -
插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序、归并排序
插入排序方法:时间复杂度O(n^2)的稳定排序: 每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。 直接插入排序的算法思路: (1) 设置监视哨r[0],将待插入纪录的值赋值给r[0]; (2) 设置开始查找的位置j; (3) 在数组中进行搜索,搜索中将第j个纪录后移,直至r[0].key≥r[j].key为止;翻译 2016-08-14 16:45:11 · 628 阅读 · 0 评论