数据结构
文章平均质量分 77
Draven__
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
5-2 Reversing Linked List
点击打开链接 链表的逆转,定义一个结构体来模拟 #include #include #include #include using namespace std; struct node { int next; int data; }a[100005]; int prehead; //指向这一次逆转的最后一个节点 int nexthead; //指向下一次逆转的第一个节点原创 2017-06-25 16:34:34 · 350 阅读 · 0 评论 -
5-5 Tree Traversals Again
点击打开链接 push顺序给出先序遍历,pop顺序给出中序遍历,根据先序中序直接求出后序,并不需要构建图 #include #include #include #include #include #include #include #include #include #include using namespace std; int N; int pre[100],in[100],post[原创 2017-06-29 18:41:34 · 469 阅读 · 0 评论 -
Rikka with Candies(bitset操作)
题意:A数组n个数,B数组m个数,q个查询, 每次给出一个k,询问有多少对(i,j), 使得Ai % Bj = k, 输出对数对模2的值 这道题可以用bitset来做,bitset与数组类似,但其中每一位只能为0或1,用来存储2进制的每一位 用整值类型将第27 位设置为1, 我们这样写 quiz1 |= 1<<27; 而用bitset 来做我们可以写 quizl[ 27 ] = ...原创 2017-08-09 16:44:13 · 753 阅读 · 0 评论 -
5-9 旅游规划
点击打开链接 有权图单源路径最小值原创 2017-07-08 19:32:31 · 467 阅读 · 0 评论 -
5-8 哈利·波特的考试
点击打开链接 简单的floyd算法 运用三层for循环建立一个二维矩阵,存有最小距离 找出一行中的最大值,然后求每行最大值的最小值原创 2017-07-06 21:02:03 · 401 阅读 · 0 评论 -
5-6 列出连通集
点击打开链接 简单图论 用邻接表的方式实现的这个无向图 map > t 然后用迭代器来遍历 flag数组判断该点是否遍历过 sort对每一个vector 排序,来保证从小到大输出 #include #include #include #include #include #include #include #include #include using namespace std;原创 2017-06-27 22:27:33 · 291 阅读 · 0 评论 -
5-8 File Transfer
点击打开链接 最简单的并查集 #include #include #include #include using namespace std; int p[10005]; int find(int x) { return x==p[x]? x : p[x]=find(p[x]); } void mix(int a,int b) { int fa=find(a); in原创 2017-06-26 21:21:58 · 278 阅读 · 0 评论 -
5-9 Huffman Codes
点击打开链接 符合两个要求就可以判断该树是否满足要求 判断输入的编码是否符合要求(1、编码长度与Huffman编码长度相同 2、前缀编码) 首先想到的避免建一棵哈弗曼树,是用一个结构体node来保存学生提交的节点的编码 但估计在判断前缀编码时会超时(N #include #include #include #include #include #include #include #in原创 2017-07-03 14:41:42 · 329 阅读 · 0 评论 -
5-5 堆中的路径
点击打开链接 用一个数组来存放堆,注意a[0]要设一个最小值来当哨兵,或者控制insert函数里for循环#include #include #include #include using namespace std; int a[1005]; int Size=0; void Insert(int x) { if(Size == 1000) { return;原创 2017-06-26 13:08:23 · 460 阅读 · 0 评论 -
5-7 六度空间 (30分)
点击打开链接 这是一道典型的bfs的题目,关键点在于设置一个last标记,标志每一层的最后一个节点,到达该节点时就层数加一 #include #include #include #include #include #include #include #include #include using namespace std; int N,M; int visit[10005]={0}; m原创 2017-06-28 22:04:43 · 463 阅读 · 0 评论 -
5-6 Root of AVL Tree
点击打开链接 建一个AVL树 #include #include #include #include using namespace std; typedef struct AVLNode *Position; typedef Position AVLTree; /* AVL树类型 */ struct AVLNode { int Data; /* 结点数据 */ AVLTre原创 2017-06-24 21:43:16 · 287 阅读 · 0 评论 -
5-4 是否同一棵二叉搜索树
点击打开链接 先建一颗模板数,然后对于每一个测试,检测到达该节点的路径上的每一个点是否遍历过,如果遍历过,则相同,否则树的顺序就不一样 #include #include #include #include using namespace std; typedef struct TreeNode *Tree; struct TreeNode { int v; Tree rig原创 2017-06-24 16:36:26 · 277 阅读 · 0 评论 -
5-4 List Leaves
点击打开链接 用一个队列实现了二叉树的层序遍历 #include #include #include #include using namespace std; #define null -1 struct TreeNode { int Element; int right,left; }T1[100]; int Buildtree(struct TreeNode T[])原创 2017-06-24 13:47:43 · 337 阅读 · 0 评论 -
5-3 树的同构
点击打开链接 首先肯定是通过题目的输入来构造出两棵树,然后我们就对第一棵树中每一个结点来找出第二棵树中的对应结点,然后判断它们的孩子结点元素是否是一样的。两棵树中包含的结点个数和元素必须相同的,而对于第一棵树的每一个结点呢,在第一棵树我们都能找到一个与之对应的结点,并且它们的左右孩子结点的元素是相同的话,当然左右可以互换,这样的两棵树就是同构的。 #include #include #i原创 2017-06-23 15:17:23 · 783 阅读 · 0 评论 -
5-2 一元多项式的乘法与加法运算
点击打开链接 因为数据比较小,所以可以用数组来模拟,数组坐标表示指数,数组大小表示系数 #include #include #include using namespace std; #define N 10005 int main() { int a[N]={0}; int b[N]={0}; int c[N]={0}; int d[N]={0}; i原创 2017-06-23 13:53:13 · 332 阅读 · 0 评论 -
5-51 两个有序链表序列的合并 (20分)
点击打开链接 对链表的一些初始操作 #include #include typedef struct Node* List; struct Node { int data; struct Node* Next; }; List InitList()//初始化 { List l; l=(List)malloc(sizeof(struct Node)); i转载 2017-06-22 20:56:38 · 375 阅读 · 0 评论 -
5-7 Complete Binary Search Tree
点击打开链接 根据老师视频写的代码,只能拿26分,估计是求高度处还发生了一定错误 #include #include #include #include #include #include #include #include #include #include using namespace std; int N; int A[1005],T[1005]; int getleftlength原创 2017-06-30 18:48:03 · 429 阅读 · 0 评论
分享