数据结构
文章平均质量分 78
insistGoGo
这个作者很懒,什么都没留下…
展开
-
单链表的一些操作
单链表的一些操作,如链表的交、并、差原创 2011-08-07 18:40:45 · 1320 阅读 · 0 评论 -
有向图中顶点的路径问题
主要解决三个问题:前提:有向图+邻接矩阵存储问题1、判断有向图中是否存在顶点u到v的路径问题2、求u到v的所有简单路径问题3、求u到v长度为k的简单路径具体如下:问题1:判断有向图中是否存在顶点u到v的路径方法:可以使用深度遍历或广度遍历源代码:#include using namespace std;const int MAX_Vertex_Num =原创 2011-11-07 20:12:19 · 5770 阅读 · 0 评论 -
三种快速排序以及快速排序的优化
1、快速排序的基本思想: 快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。2、快速排序的三个步骤:(1)选择基准:在待排序列中,按照某种方式挑出一个元素,作为 "基准"(pivot)(2)分割操作:以该基准在序列中的实际位置,把序列分成两个子序列。此时,在原创 2012-07-25 16:50:27 · 52615 阅读 · 26 评论 -
二分查找的扩展
问题:1、给定一个循环数组arr,求循环有序数组的分界点2、给定一个循环数组arr,求任意一个i使得arr[i]等于v,不存在则返回-1。~~~~~~~~~~~~~~~~~~~~~~~循环数组arr:将有序数组向左循环移位,形成的数组为循环数组即,有两个连续的子序列组成,但是整体上无序举例:有序数组:arr[8] = {2,3,3,3,3,5,6,7};形成原创 2012-07-21 19:23:04 · 1259 阅读 · 1 评论 -
Trie树的实现
一、定义: Trie,又称字典树,是一种用于快速检索的二十六叉树结构。典型的空间换时间二、结构图: 三、原理: Trie把要查找的关键词看作一个字符序列,并根据构成关键词字符的先后顺序检索树结构; 特别地:和二叉查找树不同,在Trie树中,每个结点上并非存储一个元素。四、性质: 0、利用串的公共原创 2012-08-03 22:14:47 · 6935 阅读 · 2 评论 -
快速排序的实现
最简单的快排void QSort(int arr[],int low,int high){ int first = low; int last = high; if (low>=high) return; //选择分割 int key = SelectPivot(arr,low,high);//选择选取序列的第一个元素作为基准 //一次分割 while原创 2012-07-28 22:55:29 · 1118 阅读 · 0 评论 -
快速排序的应用
1、把序列中的正负数分开举例:序列:0,2,-1,4,-2,-3,6,7,-9,10处理好的序列:-9 -3 -1 -2 4 2 6 7 0 10注意:仅仅把正负数分开就好,正数和负数里面不要求次序不要求排序,这里遍历一遍序列就可以了,时间复杂度为O(n)//应用一:把序列中的正负数分开算法#include using namespace std;const原创 2012-07-28 23:45:38 · 3708 阅读 · 0 评论 -
堆、堆排序、优先队列
大根堆的实现注意:数据存储在heap数组中,而且是从下标1开始存储的#ifndef _MAX_HEAP_#define _MAX_HEAP_#include #include using namespace std;const int HeapIncreMent = 20; templateclass MaxHeap {public: Ma原创 2012-07-29 19:39:25 · 1199 阅读 · 0 评论 -
二分查找算法
要解决的问题:1,给定一个有序(不降序)数组arr,求任意一个i使得arr[i]等于v,不存在则返回-1。2,给定一个有序(不降序)数组arr,求最小的i使得arr[i]等于v,不存在则返回-1。3,给定一个有序(不降序)数组arr,求最大的i使得arr[i]等于v,不存在则返回-1。4,给定一个有序(不降序)数组arr,求最大的i使得arr[i]小于v,不存在则返回-1。5,原创 2012-07-20 22:04:25 · 1413 阅读 · 2 评论 -
判断有向图是否有环 、环的个数以及环中元素
判断有向图是否有环有三种方法:拓扑排序、深度遍历+回溯、深度遍历 + 判断后退边这里使用 拓扑排序 和 深度遍历 + 回溯判断是不是环。使用 深度遍历 + 判断后退边找出环个数 以及环中元素1、拓扑排序思想:找入度为0的顶点,输出顶点,删除出边。循环到无顶点输出。若:输出所有顶点,则课拓扑排序,无环;反之,则不能拓扑排序,有环使用:可以使用拓扑排序为有向无环图每一个结点进行编号原创 2011-11-16 21:33:17 · 17628 阅读 · 6 评论 -
MFC和STL的几个小例
CList中RemoveAt的使用#include #include using namespace std;int main(){ POSITION tmpPos; CList m_clist; for (int i = 0;i <= 10;i++) { m_clist.AddTail(i); } POSITION pos = m_cl原创 2013-03-06 11:11:00 · 1396 阅读 · 0 评论 -
判断无向图中环的个数 以及 每个环中的元素:(有错误,待修改)
VS2008可以运行通过。程序参考了许多大牛的总结,因能力有限,如有问题,请各位大牛指正。存储结构:邻接矩阵(使用邻接表会比较麻烦--要删除每条边)判断图中是否有环的思想:如果存在回路,则必存在一个子图,是一个环路。环路中所有顶点的度>=2。 找出环个数和环中元素的思想:(有错误,待修改)把度为1 的结点都删除后,剩下的均为环中元素,之后进行深度遍历,就可以得到连通分量其中原创 2011-11-06 20:39:45 · 6151 阅读 · 1 评论 -
C++实现常见排序算法
本程序参考了网上各位大牛和数据结构中的程序,VS2005运行通过,如有问题,请各位大牛指正。实现的排序有:直接插入排序、折半插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序等等#include using namespace std;const int l原创 2011-10-04 22:50:34 · 988 阅读 · 0 评论 -
C++实现循环链表
C++实现循环链表原创 2011-08-07 16:02:56 · 9335 阅读 · 0 评论 -
C++实现单链表(含头结点)
C++实现单链表,VS2005运行通过原创 2011-08-07 17:46:49 · 4158 阅读 · 3 评论 -
C++实现单链表(不含头结点)
VS2005运行通过,如有问题,请各位大牛指正。 注意:单链表不含有头结点#include using namespace std;template//定义结点struct Node{ Type data; Node *next;};/原创 2011-08-12 18:23:08 · 2598 阅读 · 0 评论 -
动态数组实现循环队列
动态数组实现循环队列原创 2011-08-12 20:00:49 · 1033 阅读 · 0 评论 -
使用单链表实现链栈
使用单链表实现链栈原创 2011-08-12 19:33:52 · 2702 阅读 · 0 评论 -
静态数组实现双向栈
静态数组实现双向栈原创 2011-08-12 21:17:21 · 1713 阅读 · 0 评论 -
静态数组实现栈
VS2005运行通过,如有问题,请各位大牛指正。原创 2011-08-12 18:28:26 · 1523 阅读 · 0 评论 -
静态数组实现循环队列
VS2005运行通过,如有问题,请各位大牛指正。原创 2011-08-12 19:59:20 · 1145 阅读 · 0 评论 -
C++实现双向链表(含头结点)
VS2005运行通过,如有问题,请各位大牛指正。 注意:双向链表含有头结点#include using namespace std;templatestruct Node{ Type data; Node* prior; Node* next;原创 2011-08-12 18:26:18 · 4266 阅读 · 0 评论 -
动态数组实现栈
VS2005运行通过,如有问题,请各位大牛指正。 /*动态栈的条件栈顶初始值:top=0;栈顶:总是指向刚刚压入值的下一单元栈空:top=0栈满:top=Max (或者不存在栈满,可以继续申请空间)入栈: data[top++] = NewItem;出原创 2011-08-12 18:34:28 · 2182 阅读 · 1 评论 -
使用单链表实现链队列
单链表类作为链栈的私有变量原创 2011-08-12 20:02:40 · 1478 阅读 · 2 评论 -
三叉链表实现二叉树
VS2005可以运行通过。程序参考了许多大牛的总结,因能力有限,如有问题,请各位大牛指正。二叉树采用三叉链表,实现了二叉树的构造、遍历、深度、宽度、结点个数、叶子个数 以及 结点的交换、层次、祖先、双亲、左孩子、右孩子、左兄弟、右兄弟各种功能#include usin原创 2011-08-16 00:17:19 · 6400 阅读 · 6 评论 -
使用C++ 和 孩子兄弟表示法实现树
VS2008可以运行通过。程序参考了许多大牛的总结,因能力有限,如有问题,请各位大牛指正。程序采用孩子兄弟表示法存储树,实现了树的构造、遍历、深度、宽度、结点个数、叶子个数 以及 结点的层次、祖先、双亲、左兄弟、右兄弟各种功能#include using namesp原创 2011-10-15 21:34:42 · 12939 阅读 · 6 评论