数据结构
爱篮球爱IT
这个作者很懒,什么都没留下…
展开
-
nyoj35——表达式求值
这道题是一道很好的数据结构题目,会用到栈,需要弄清楚后缀表达式。#include #include #include #include #include using namespace std;int priority(char c)//优先级{ if(c == '=') return 0; if(c == '+') return 1;原创 2017-01-15 13:43:20 · 395 阅读 · 0 评论 -
图的存储结构——邻接矩阵
知识点疑惑:->是指针指向其成员的运算符 .是结构体的成员运算符。最大的区别是->前面放的是指针,而.前面跟的是结构体变量。#include #include #include using namespace std;const int maxn=100;const int inf=100000;typedef struct MGraph{ int v[maxn];原创 2017-08-15 10:37:57 · 425 阅读 · 0 评论 -
nyoj108——士兵杀敌(一)
描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。小工是南将军手下的军师,南将军现在想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。注意,南将军可能会问很多次问题。输入只有一组测试数据第一行是两个整数N,M,其中N表示士兵的个数(1随后的一行是N个整数,ai表示第i号士兵杀敌数目。(0随后的M行每行有两个整数m,n,表示南将军想知道原创 2017-01-18 10:10:03 · 250 阅读 · 0 评论 -
poj 2299
Ultra-QuickSortTime Limit: 7000MSMemory Limit: 65536KTotal Submissions: 55762Accepted: 20600DescriptionIn this problem, you have to analyze a particular sorti原创 2016-08-21 10:00:05 · 387 阅读 · 0 评论 -
二叉排序树——完整代码实现
二叉排序树,又称二叉查找树。它或者是一颗空树,或者是具有下列性质的二叉树。(1) 若他的左子树不为空,则左子树上所有结点的值均小于他的根结点的值。(2) 若他的右子树不为空,则右子树上所有结点的值均大于他的根结点的值。(3) 他的左右子树也分别是二叉排序树。 #include #include #include #include using原创 2017-09-06 15:15:55 · 4513 阅读 · 0 评论 -
常见排序算法的复杂度以及稳定性
序号排序类别时间复杂度空间复杂度稳定性1插入排序O(n^2)1√2冒泡排序O(n^2)1√3归并排序O(nlogn)O(n)√4原创 2017-10-22 11:37:08 · 290 阅读 · 0 评论 -
二叉树的建立以及前序遍历、中序遍历、后序遍历
这几天在复习数据结构,参考的书籍是《大话数据结构》,刚开始我一直不明白,在函数CreateBiTree中为什么要传入一个BiTree的指针。因为我认为BiTree它本身不就是一个指针吗,为什么还要搞一个指针的指针,我就去除那个*,发现不能正常的建树。到网上查阅资料后才发现,原来我们在建树的过程中,我们需要改变BiTree的值,如果我只传入一个BiTree对象,是改不了他的值,形参不会对实参有影响。原创 2017-08-11 11:31:02 · 348 阅读 · 0 评论 -
队列——顺序存储与链式存储
顺序存储:#include #include using namespace std;const int MAXSIZE=105;typedef struct Queue{ int data[MAXSIZE]; int front,rear;}SqQueue;int Push(SqQueue *Q,int e){ if((Q->rear+1)%MAXS原创 2017-08-07 17:17:58 · 387 阅读 · 0 评论 -
栈的应用——中缀表达式转后缀表达式,后缀表达式的求值,中缀表达式求值
代码:#include #include #include #include using namespace std;int priority(char c)//比较优先级{ if(c=='*'||c=='/') return 2; if(c=='+'||c=='-') return 1; return 0;}int m原创 2017-08-07 16:21:58 · 534 阅读 · 0 评论 -
nyoj128——前缀式计算
描述先说明一下什么是中缀式:如2+(3+4)*5这种我们最常见的式子就是中缀式。而把中缀式按运算顺序加上括号就是:(2+((3+4)*5))然后把运算符写到括号前面就是+(2 *( +(3 4) 5) )把括号去掉就是:+ 2 * + 3 4 5最后这个式子就是该表达式的前缀表示。给你一个前缀表达式,请你计算出该前缀式的值。比如:原创 2017-01-24 13:55:13 · 263 阅读 · 0 评论 -
nyoj116——士兵杀敌(二)
描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。小工是南将军手下的军师,南将军经常想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。南将军的某次询问之后士兵i可能又杀敌q人,之后南将军再询问的时候,需要考虑到新增的杀敌数。输入只有一组测试数据第一行是两个整数N,M,其中N表示士兵的个数(1随后的一行是N个整数,ai表示第i号原创 2017-01-18 10:33:26 · 246 阅读 · 0 评论 -
nyoj93——汉诺塔(三)
汉诺塔(三)描述 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一原创 2017-01-17 14:33:08 · 305 阅读 · 0 评论 -
图的存储结构——邻接表
#include #include #include using namespace std;const int maxn=105;typedef struct EdgeNode{ int adjvex; int weight; struct EdgeNode *next;}EdgeNode;typedef struct VertexNode{原创 2017-08-16 10:45:45 · 207 阅读 · 0 评论