数据结构——c++
文章平均质量分 74
银灵子Qincheng
曾在鹅厂、菊厂体验过生活,目前在猫厂被生活体验。公众号:我的IT技术路。关注我,一起聊聊感兴趣的。
展开
-
Floyd-Warshall算法
Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题。Floyd-Warshall算法的时间复杂度为O(N3),空间复杂度为O(N2)。原理Floyd-Warshall算法的原理是动态规划。设Di,j,k为从i到j的只以(1..k)集合中的节点为中间节点的最短路径的长度。转载 2015-09-30 11:33:34 · 813 阅读 · 0 评论 -
数据结构——广义表和十字链表
1.广义表概念:是线性表的推广,可以存储不同的数据结构,一般记为:LS=(a1,a2,...an);ai可以是单个元素也可以是广义表。广义表的数据结构是用链结构来实现的。几个特殊的广义表的长度:A=();长度为0,是个空表,D=((),(e),(a,(b,c,d)))是一个三元素的广义表E=(a,E)=(a,(a,(a,.....)))是一个长度2的广义表。A=(())的长度为原创 2015-10-30 10:42:04 · 1304 阅读 · 0 评论 -
数据结构——排序(三)
上次还有两种速度最快的排序方法:就是基数排序和桶排序基数排序:原创 2015-10-24 16:56:25 · 341 阅读 · 0 评论 -
数据结构——排序(二)
上面说了简单排序,简单排序的平均时间为o(n^2),复杂排序中的平均时间复杂度为o(nlogn),但是简单排序有两个优点,辅助空间复杂度为O(1),都是稳定排序,反正排序方法各有优缺点,具体的如下表: 这张表介绍了基本排序方法,数据引用于博客http://blog.csdn.net/whuslei/article/details/6442755。原创 2015-10-21 09:15:41 · 273 阅读 · 0 评论 -
字符串的KMP算法
举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字,许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。下面我用自己的语言,试图写一篇比较好懂的KMP算法解释。1.首先,字符串"BBC AB转载 2015-10-19 20:05:10 · 284 阅读 · 0 评论 -
数据结构——查找
查找的方法主要有折半查找、二叉排序树、散列表等查找方式,由于二叉排序树、散列表已经有了,现在主要看看折半查找吧。。。折半查找的思路还是很简单的,对一个序列进行排序,将排序的序列从两端依次递减选择可能出现的区域:代码如下:#include using namespace std;int find_key(int *a,int n,int key){ int last=n, mid原创 2015-10-21 08:52:36 · 277 阅读 · 0 评论 -
数据结构——排序(-)
一般介绍的排序包含简单排序中的冒泡排序,选择排序,插入排序,复杂排序有希尔排序,归并排序,堆排序,快速排序,还有两个超快的排序是基数排序,桶排序冒泡排序:#include using namespace std;void bubble_sort(int *a,int len){ /*for(int i=0;i<len-1;i++)// for (int j=i+1;j<len;j+原创 2015-10-21 09:14:03 · 350 阅读 · 0 评论 -
数据结构——查找之二叉排序树
二叉排序树的基本操作:包含初始化,插入,删除,查找,中序遍历。。代码如下://二叉排序树binary_sort_tree//临时变量一般为值,指针一般不适合临时比变量#include using namespace std;#define GET_ARRAY_LEN(array){ (sizeof(array) / sizeof(array[0]))}struct my_tr原创 2015-10-19 10:30:45 · 319 阅读 · 0 评论 -
c++数据结构——模板类重写二叉树
二叉树的基本操作如下:Btreenode* InitCompleteBinaryTree(T *a,int len);//按数组a的顺序初始化一个完全二叉树(反序列化过程) Btreenode* ClearBtree(Btreenode* root);//清空树 bool IsEmpty(Btreenode*root);//是否是空树 void TreeDeep(Btreenode*r原创 2015-10-19 10:18:52 · 419 阅读 · 0 评论 -
数据结构——整数的四则运算
栈的应用——整数的四则运算:例如计算:(1+2)*3-4/4;代码如下:/************************************************************************//* 整数加减乘除四则运算,先要完成后续排列,然后完成数据进出栈 *//**********************************原创 2015-10-19 10:47:39 · 1883 阅读 · 0 评论 -
c++数据结构——模板类重写栈
模板重写栈的基本操作,不多说,上代码,不足之处,麻烦大神指点。。。基本操作如下:bool Is_Empty(my_stack*a);//是否为空栈 T GetTop(my_stack*a);//获取栈顶元素 void Stack_Push(my_stack*a,T b);//入栈 T Stack_Pop(my_stack*a);//出栈 int StackLenth(my_stac原创 2015-10-18 13:16:32 · 355 阅读 · 0 评论 -
数据结构——字符串函数的重写
串的基本操作:原创 2015-10-18 13:26:26 · 379 阅读 · 0 评论 -
模板重写数据结构——链表
1.链表的操作,由于链表的值不晓得取整型还是字符型,所以刚脆用模板来重新写了一次:包含的操作有 line_list_node(const T &a):val(a),next(NULL){};//初始化一个结点 virtual line_list_node* Init_List(T a,int len);//初始化一个长度为len的值为a链表 virtual line_list_node*原创 2015-10-17 18:49:02 · 248 阅读 · 0 评论 -
数据结构——外部排序
之前有写过内部排序,这次看到严蔚敏老师的书上还介绍了外部排序,就一起记录一下,以便以后可以看看:1.外部排序外部排序是指数据量很大,一下子不能将所有的数据放入内存里面进行排序,只能一部分一部分从硬盘中读取数据,送入内部排序,将内部排序的结果取出,换下一批数据进行排序。对于外部排序的提高的核心问题是:减少外部存储读写的次数。在一般情况下,对m个初始归并段进行K-路平衡归并,归并的趟数:s原创 2015-10-30 16:43:43 · 2767 阅读 · 0 评论