数据结构
文章平均质量分 94
葉_蕖
放弃不难,但坚持一定很酷
展开
-
6-1 求二叉树高度 (20 分)
本题要求给定二叉树的高度。函数接口定义:int GetHeight( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left; BinTree Right;}...原创 2018-11-02 00:01:31 · 8459 阅读 · 0 评论 -
6-2 邻接表存储图的广度优先遍历 (20 分)
试实现邻接表存储图的广度优先遍历。函数接口定义:void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) );其中LGraph是邻接表存储的图,定义如下:/* 邻接点的定义 */typedef struct AdjVNode *PtrToAdjVNode; struct AdjVNode{ Vertex AdjV; ...原创 2018-11-12 22:10:01 · 6303 阅读 · 1 评论 -
1044 Shopping in Mars (25 分)
Shopping in Mars is quite a different experience. The Mars people pay by chained diamonds. Each diamond has a value (in Mars dollars M$). When making the payment, the chain can be cut at any position ...原创 2018-11-13 21:43:06 · 172 阅读 · 0 评论 -
lower_bound( )和upper_bound( )用法
首先,使用的前提是排好序的非递减数组。lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。upp...原创 2018-11-13 21:56:15 · 144 阅读 · 0 评论 -
7-5 堆中的路径 (25 分)
将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上...原创 2018-11-14 20:31:02 · 323 阅读 · 0 评论 -
数据结构——树——堆的学习
首先要知道堆是什么:优先队列(Priority Queue):特殊的“队列”,取出元素的顺序是 依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序。以上可以看出以上结构都不太尽如人意,由此,我们可以采用二叉树来实现优先队列堆的抽象数据类型描述 :堆的操作(以最大堆举例)附例题:求取堆中的路径...原创 2018-11-14 20:51:27 · 1242 阅读 · 0 评论 -
数据结构——树——哈夫曼树
下列叙述错误的是(B)。A.一棵哈夫曼树的带权路径长度等于其中所有分支结点的权值之和B.当一棵具有n 个叶子结点的二叉树的WPL 值为最小时,称其树为哈夫曼 树,其二叉树的形状是唯一的C.哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近D.哈夫曼树的结点个数不能是偶数对N(N≥2)个权值均不相同的字符构造哈夫曼树。下列关于该哈夫曼树的叙述中,错误的是: DA. 树中一...原创 2018-11-14 21:54:53 · 14292 阅读 · 0 评论 -
数据结构——树——二叉搜索树
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二叉排序树的查找过程和次优二叉树类似,通常采取二叉链表作为二叉排序树的存储结构。中序遍历二叉排序树可得到一...原创 2018-11-15 23:21:44 · 885 阅读 · 3 评论 -
数据结构——树——平衡二叉树
平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。 最小二叉平衡树的节点总数的公式如下 F(n)=F(n-1)+F(n-2)+1 这个类似于一个...原创 2018-11-16 11:05:55 · 786 阅读 · 0 评论 -
数据结构——树——树的表示
树的定义:树状图是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树;树的一些基本术语1. 结点的度(Degree):结点的子树个...原创 2018-11-16 15:14:29 · 1716 阅读 · 0 评论 -
数据结构——树—— 二叉树及存储结构
在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。一棵深度为k,且有2^k-1个节点的二叉树,称为满二叉树。这种树的特点是每一层上的节点数都是最大节点数。而在一棵二叉树中,除最后一层外,若其余层都是满的,并且最后一层或者是满的,或者是在右边缺少连续若干节点,...原创 2018-11-16 16:10:21 · 1647 阅读 · 1 评论 -
6-1 邻接矩阵存储图的深度优先遍历 (20 分)
试实现邻接矩阵存储图的深度优先遍历。函数接口定义:void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) );其中MGraph是邻接矩阵存储的图,定义如下:typedef struct GNode *PtrToGNode;struct GNode{ int Nv; /* 顶点数 */ int Ne; /* 边...原创 2018-11-12 21:18:04 · 13488 阅读 · 0 评论 -
第七章--图--基本概念 选择题
2-1若无向图G =(V,E)中含10个顶点,要保证图G在任何情况下都是连通的,则需要的边数最少是: (3分) 45 37 36 9答案:2.2-2给定一个有向图的邻接表如下图,则该图有__个强连通分量。(3分) 4 {{0, 1, 5}, {2}, {3}, {4}} 3 {{2}, {4}, {0, 1, 3, 5}} 1 {0, 1, 2, 3, 4, 5} 1 {0, 5, 1, 3}答案...原创 2018-11-12 20:50:25 · 33014 阅读 · 0 评论 -
7-4 是否同一棵二叉搜索树 (25 分)
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查的...原创 2018-11-02 20:30:31 · 416 阅读 · 0 评论 -
6-12 二叉搜索树的操作集 (30 分)
本题要求实现给定二叉搜索树的5种常用操作。函数接口定义:BinTree Insert( BinTree BST, ElementType X );BinTree Delete( BinTree BST, ElementType X );Position Find( BinTree BST, ElementType X );Position FindMin( BinTree BST );...原创 2018-11-02 21:35:22 · 2703 阅读 · 0 评论 -
7-3 树的同构 (25 分)
给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。图1图2现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N (≤10),即该树的结点数(此时假设...原创 2018-11-03 10:52:52 · 2557 阅读 · 0 评论 -
7-21 求前缀表达式的值(二叉树)
算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4。请设计程序计算前缀表达式的结果值。输入格式:输入在一行内给出不超过30个字符的前缀表达式,只包含+、-、*、\以及运算数,不同对象(运算数、运算符号)之间以空格分隔。输出格式:输出前缀表达式的运算结果,保留...原创 2018-11-03 19:48:27 · 1900 阅读 · 0 评论 -
计算给定二叉树T的宽度
下列代码的功能是计算给定二叉树T的宽度。二叉树的宽度是指各层结点数的最大值。函数Queue_rear和Queue_front分别返回当前队列Q中队尾和队首元素的位置。和bfs算法有点相似。。typedef struct TreeNode *BinTree;struct TreeNode{ int Key; BinTree Left; BinTree Right;};...原创 2018-11-05 21:18:07 · 6369 阅读 · 0 评论 -
7-28 搜索树判断 (25 分)
对于二叉搜索树,我们规定任一结点的左子树仅包含严格小于该结点的键值,而其右子树包含大于或等于该结点的键值。如果我们交换每个节点的左子树和右子树,得到的树叫做镜像二叉搜索树。现在我们给出一个整数键值序列,请编写程序判断该序列是否为某棵二叉搜索树或某镜像二叉搜索树的前序遍历序列,如果是,则输出对应二叉树的后序遍历序列。输入格式:输入的第一行包含一个正整数N(≤1000),第二行包含N个整数,为给...原创 2018-11-06 18:32:33 · 953 阅读 · 0 评论 -
判断一棵树是否是完全二叉树
首先要知道完全二叉树的定义: 前n-1层都是满的,第n层如有空缺,则是缺在右边,即第n层的最右边的节点,它的左边是满的,右边是空的。以二叉搜索树举例。#include <bits/stdc++.h>using namespace std;typedef struct BNode* BTree;struct BNode{ int data; BTree lef...原创 2018-11-06 19:03:42 · 1763 阅读 · 0 评论 -
判断二叉树是否是平衡二叉树
平衡二叉搜索树(Balanced Binary Tree)具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。思路:如果一颗二叉树的所有子树都是平衡二叉树,它一定是平衡二叉树。#include <bits/stdc++.h>using namespace std;typedef struct BNode* BTree;st...原创 2018-11-06 19:18:29 · 283 阅读 · 0 评论 -
判断一颗二叉树是否是另一颗树的子树。
思路:首先找到值相同的根节点,然后递归判断是否完全相同。(方便起见,样例还是建一个二叉搜索树)#include <bits/stdc++.h>using namespace std;typedef struct BNode* BTree;struct BNode{ int data; BTree left; BTree right;};void...原创 2018-11-06 21:09:49 · 418 阅读 · 0 评论 -
1031 查验身份证 (15 分)
一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:Z:0 1 2 3 4 5 6 7 8 9 10M:1 0 X 9 8 7 6 5 4 3 2现在给定一些身...原创 2018-11-09 11:52:31 · 149 阅读 · 0 评论 -
数据结构——树——二叉树遍历
遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。设L、D、R分别表示遍历左子树、访问根结点和遍历右子树, 则对一棵二叉树的遍历有三种情况:DLR(称为先根次序遍历),LDR(称为中根次序遍历),LRD (称为后根次序遍历...原创 2018-11-16 17:08:47 · 1031 阅读 · 0 评论 -
数据结构——树
数据结构——树——树的表示数据结构——树—— 二叉树及存储结构数据结构——树——二叉树遍历数据结构——树——二叉搜索树数据结构——树——平衡二叉树数据结构——树——堆的学习数据结构——树——哈夫曼树...原创 2018-11-16 17:16:00 · 2324 阅读 · 0 评论 -
数据结构——图——拓扑排序
在图论中,由一个有向无环图的顶点组成的序列,当且仅当满足下列条件时,称为该图的一个拓扑排序(英语:Topological sorting)。(1)每个顶点出现且只出现一次;(2)若A在序列中排在B的前面,则在图中不存在从B到A的路径。也可以定义为:拓扑排序是对有向无环图的顶点的一种排序,它使得如果存在一条从顶点A到顶点B的路径,那么在排序中B出现在A的后面。有向无环图(DAG)才有拓扑排...原创 2018-12-01 15:07:02 · 721 阅读 · 0 评论 -
数据结构——图
图的定义图的遍历最小生成树最短路径拓扑排序 大佬博客:https://www.cnblogs.com/moonlord/p/5938061.html原创 2018-12-01 15:12:12 · 278 阅读 · 3 评论 -
排序-归并排序与基数排序 选择题
原创 2018-12-07 11:29:45 · 500 阅读 · 0 评论 -
排序--交换类排序与选择类排序 选择题
原创 2018-12-07 11:33:03 · 219 阅读 · 0 评论 -
顺序表创建和就地逆置 (10 分)
本题要求实现顺序表的创建和就地逆置操作函数。L是一个顺序表,函数ListCreate_Sq(SqList &L)用于创建一个顺序表,函数ListReverse_Sq(SqList &L)是在不引入辅助数组的前提下将顺序表中的元素进行逆置,如原顺序表元素依次为1,2,3,4,则逆置后为4,3,2,1。函数接口定义:Status ListCreate_Sq(SqList &a...原创 2018-12-18 18:01:24 · 1569 阅读 · 0 评论 -
有序顺序表的插入 (10 分)
本题要求实现递增顺序表的有序插入函数。L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序插入一个数据。 比如:原数据有:2 5,要插入一个元素3,那么插入后顺序表为2 3 5。 要考虑扩容的问题。函数接口定义:Status ListInsert_SortedSq(SqList ...原创 2018-12-18 19:59:18 · 4273 阅读 · 0 评论 -
带头结点的单链表就地逆置 (10 分)
本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数。L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置,如原单链表元素依次为1,2,3,4,则逆置后为4,3,2,1。函数接口定义:void ListReverse_L(LinkList &L);其中 L 是一个带头结点的单链表。...原创 2018-12-18 20:18:38 · 2466 阅读 · 1 评论 -
递归程序设计方法练习--递归输出单链表 (10 分)
本题要求用递归方法编写递归函数实现无头结点单链表的输出操作函数。L是一个不带头结点的单链表,函数void ListPrint_L_Rec(LinkList L)要求用递归的方法输出无头结点之单链表中各个元素的值,每个元素的前面都有一个空格(包括首元素)。递归思想可借鉴下述代码中链表创建的递归函数。函数接口定义:void ListPrint_L_Rec(LinkList L);其中 ...原创 2018-12-18 20:24:33 · 2057 阅读 · 0 评论 -
jmu-ds-集合的并交差运算 (15 分)(单链表)
有两个整数集合A和B,现在要求实现集合的并、交、差运算。例如A={2,7,9} ,B={3,7,12,2},则集合的并C=A∪B={2,7,9,3,12},而集合的交 C=A∩B={2,7},集合的差C=A-B={9}。集合A和B中元素个数在1~100之间。输入格式:三行,第一行分别为集合A,B的个数第二行为A集合的数据第三行为B集合的数据输出格式:三行第一行集合并的结果:C...原创 2018-12-19 01:04:38 · 970 阅读 · 0 评论 -
jmu-ds-循环单链表的基本运算 (15 分)
实现循环单链表的基本运算:初始化、插入、删除、求表的长度、判空、释放。(1)初始化循环单链表L,输出(L->next==L)的逻辑值;(2)依次采用尾插法插入元素:输入分两行数据,第一行是尾插法需要插入的字符数据的个数,第二行是具体插入的字符数据。(3)输出循环单链表L;(4)输出循环单链表L的长度;(5)判断循环单链表L是否为空;(6)输出循环单链表L的第3个元素;(7)输出...原创 2018-12-19 19:24:20 · 858 阅读 · 0 评论 -
数据结构——图——最短路径
Dijkstra单源最短路径算法给定一个带权有向图G=(V,E),其中每条边的权是一个实数。另外,还给定V中的一个顶点,称为源。现在要计算从源到其他所有各顶点的最短路径长度。这里的长度就是指路上各边权之和。这个问题通常称为单源最短路径问题。思路:将图G中所有的顶点V分成两个顶点集合S和T。以v为源点已经确定了最短路径的终点并入S集合中,S初始时只含顶点v,T则是尚未确定到源点v最短路径的顶...原创 2018-12-01 14:54:28 · 1214 阅读 · 0 评论 -
数据结构—图—最小生成树
什么是最小生成树一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。 [1] 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。 2、普里姆算法—Prim算法算法思路:首先就是从图中的一个起点a开始,把a加入U集合,然后,寻找从与a有关联的边中,权重最小的那条边并且该边的终点b在顶...原创 2018-12-01 14:31:15 · 2875 阅读 · 0 评论 -
7-2 畅通工程之最低成本建设问题 (30 分)
某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到城镇道路统计表,表中列出了有可能建设成快速路的若干条道路的成本,求畅通工程需要的最低成本。输入格式:输入的第一行给出城镇数目N (1&lt;N≤1000)和候选道路数目M≤3N;随后的M行,...原创 2018-11-17 20:54:06 · 2943 阅读 · 0 评论 -
7-2 天梯地图 (30 分)
本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线;一条是最短距离的路线。题目保证对任意的查询请求,地图上都至少存在一条可达路线。输入格式:输入在第一行给出两个正整数N(2 ≤ N ≤ 500)和M,分别为地图中所有标记地点的个数和连接地点的道路条数。随后M行,每行按如下格式给出一条道路的信息:V1 V2 one-wa...原创 2018-11-18 14:25:33 · 2076 阅读 · 2 评论 -
7-1 关键活动 (30 分)
假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程则不可以同时开设,因为它们有先后的依赖关系...原创 2018-11-21 00:31:22 · 3066 阅读 · 1 评论