邻接矩阵遍历图,求某顶点的度

合集下载

数据结构笔试复习

数据结构笔试复习

数据结构笔试复习⼀选择题1.下述哪⼀条是顺序存储结构的优点?()A.存储密度⼤ B.插⼊运算⽅便 C.删除运算⽅便 D.可⽅便地⽤于各种逻辑结构的存储表⽰2.数据结构在计算机内存中的表⽰是指( )。

A. 数据的物理结构B. 数据结构C. 数据的逻辑结构D. 数据元素之间的关系3.下⾯关于线性表的叙述中,错误的是哪⼀个?()A.线性表采⽤顺序存储,必须占⽤⼀⽚连续的存储单元。

B.线性表采⽤顺序存储,便于进⾏插⼊和删除操作。

C.线性表采⽤链接存储,不必占⽤⼀⽚连续的存储单元。

D.线性表采⽤链接存储,便于插⼊和删除操作。

4.若线性表最常⽤的操作是存取第i个元素及其前驱的值,则采⽤( )存储⽅式节省时间。

A. 单链表B. 双向链表C. 循环链表D. 顺序表5.线性表是具有n 个()的有限序列(n>0)。

A.表元素 B.字符 C.数据元素 D.数据项 E.信息项6.若某线性表最常⽤的操作是存取任⼀指定序号的元素和在最后进⾏插⼊和删除运算,则利⽤()存储⽅式最节省时间。

A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表7.某线性表中最常⽤的操作是在最后⼀个元素之后插⼊⼀个元素和删除第⼀个元素,则采⽤()存储⽅式最节省运算时间。

A.单链表 B.仅有头指针的单循环链表 C.双链表 D.仅有尾指针的单循环链表8.设⼀个链表最常⽤的操作是在末尾插⼊结点和删除尾结点,则选⽤( )最节省时间。

A. 单链表B.单循环链表C. 带尾指针的单循环链表D.带头结点的双循环链表9.若某表最常⽤的操作是在最后⼀个结点之后插⼊⼀个结点或删除最后⼀个结点。

则采⽤()存储⽅式最节省运算时间。

A.单链表 B.双链表 C.单循环链表 D.带头结点的双循环链表10. 链表不具有的特点是()A.插⼊、删除不需要移动元素 B.可随机访问任⼀元素C.不必事先估计存储空间 D.所需空间与线性长度成正⽐11、3个结点可构成_____棵不同形态的⼆叉树。

计算机专业基础综合数据结构(图)历年真题试卷汇编4

计算机专业基础综合数据结构(图)历年真题试卷汇编4

计算机专业基础综合数据结构(图)历年真题试卷汇编4(总分:58.00,做题时间:90分钟)一、综合题(总题数:7,分数:14.00)1.已知一图如下图所示:(1)写出全部拓扑排序;(2)以V1为源点,以V8为终点,给出所有事件允许发生的最早时间和最晚时间,并给出关键路径;(3)求V1结点到各点的最短距离。

【北京邮电大学2000五(15分)】__________________________________________________________________________________________正确答案:(正确答案:关键路径有3条,长17。

各事件允许发生的最早时间和最晚时间略。

V1→V2→V6→V8,V1→V3→V5→V7→V8,V1→V7→V8→V1→V4→V5→V8 (3)V1结点到其他各结点的最短距离为:2,3,6,12,10,15,16。

)2.(1)对于有向无环图,叙述求拓扑有序序列的步骤;(2)对于以下的图,写出它的四个不同的拓扑有序序列。

【南开大学1998二(12分)】__________________________________________________________________________________________ 正确答案:(正确答案:(1)对有向图,求拓扑序列步骤为: 1)在有向图中选一个没有前驱(即入度为零)的顶点并输出。

2)在图中删除该顶点及所有以它为尾的弧。

3)重复1)和2),直至全部顶点输出,这时拓扑排序完成;否则,图中存在环,拓扑排序失败。

(2)这里使用形式化描述方法,当有多个顶点可以输出时,将其按序从上往下排列,这样不会丢掉拓扑序列。

这里只画出从顶点1开始的所有可能的拓扑序列,从顶点3开始的拓扑序列可类似画出。

)3.有向图的拓扑排序能否用图的深度搜索模式来查找?若能,请简述方法;若不能,请简述原因。

【西北大学2000二、8(5分)】__________________________________________________________________________________________ 正确答案:(正确答案:图的深度优先遍历可用于拓扑排序。

20.给出右图所示有向图的邻接矩阵、邻接表,并给出每个顶

20.给出右图所示有向图的邻接矩阵、邻接表,并给出每个顶

20.给出右图所示有向图的邻接矩阵、邻接表,并给出每个顶点的入度和出度。

解:(a)邻接矩阵为: 邻接表为: 011000000010000101000011000000000010⎛⎫ ⎪ ⎪ ⎪⎪ ⎪⎪ ⎪ ⎪⎝⎭逆邻接表为:入度和出度为:(b)邻接矩阵为:0111010101110111010101110⎛⎫ ⎪ ⎪⎪ ⎪ ⎪ ⎪⎝⎭邻接表=逆邻接表为:21.对右图所示网分别给出:(1) 深度优先搜索遍历序列(分别从V1和V4开始); (2)广度优先搜索遍历序列(分别从V1和V4开始); (3)用普里姆算法求得最小生成树的过程; (4)用克鲁斯卡尔算法求得最小生成树的过程;解:从V1开始的深度优先搜索序列为: 1 2 4 3 5 6 7 8从V4开始的深度优先搜索序列为: 4 2 1 3 5 6 7 8 序列不唯一,可有其他形式。

(3)广度优先搜索遍历序列(分别从V1和V4开始);解:从V1开始的广度优先搜索序列为: 1 2 3 4 5 6 7 8从V4开始的广度优先搜索序列为: 4 2 3 5 6 1 7 8 序列不唯一,可有其他形式。

(4)用普里姆算法求得最小生成树的过程; 解:{3,4}, {3,4},{4,2},{3,4},{4,2},{2,1},{3,4},{4,2},{2,1},{4,6},{3,4},{4,2},{2,1},{4,6},{6,5},{3,4},{4,2},{2,1},{4,6},{6,5},{6,8},{3,4},{4,2},{2,1},{4,6},{6,5},{6,8},{8,7}, (不唯一)(5)用克鲁斯卡尔算法求得最小生成树的过程;解: (不唯一){1},{2},{3},{4},{5},{6},{7},{8},{1},{2},{3,4},{5},{6},{7},{8},{1},{2},{3,4},{5,6},{7},{8},{1},{2},{3,4},{{5,6},{6,8}},{7},{1},{{2,4},{3,4}},{{5,6},{6,8}},{7},{{1,2},{2,4},{3,4}},{{5,6},{6,8}},{7},{{1,2},{2,4},{3,4}},{{5,6},{6,8},{8,7}},{{1,2},{2,4},{3,4},{4,6},{5,6},{6,8},{8,7}},23.给出右图所示无环图的所有拓扑有序序列。

计算机学科专业基础综合数据结构-图(二)_真题-无答案

计算机学科专业基础综合数据结构-图(二)_真题-无答案

计算机学科专业基础综合数据结构-图(二)(总分100,考试时间90分钟)一、单项选择题(下列每题给出的4个选项中,只有一个最符合试题要求)1. 具有6个顶点的无向图至少应有______条边才能确保是一个连通图。

A.5 B.6 C.7 D.82. 设G是一个非连通无向图,有15条边,则该图至少有______个顶点。

A.5 B.6 C.7 D.83. 下列关于无向连通图特性的叙述中,正确的是______。

①所有顶点的度之和为偶数②边数大于顶点个数减1③至少有一个顶点的度为1A.只有① B.只有② C.①和② D.①和③4. 对于具有n(n>1)个顶点的强连通图,其有向边的条数至少是______。

A.n+1B.nC.n-1D.n-25. 下列有关图的说法中正确的是______。

A.在图结构中,顶点不可以没有任何前驱和后继 B.具有n个顶点的无向图最多有n(n-1)条边,最少有n-1条边 C.在无向图中,边的条数是结点度数之和 D.在有向图中,各顶点的入度之和等于各顶点的出度之和6. 对于一个具有n个顶点和e条边的无向图,若采用邻接矩阵表示,则该矩阵大小是______,矩阵中非零元素的个数是2e。

A.n B.(n-1)2 C.n-1 D.n27. 无向图的邻接矩阵是一个______。

A.对称矩阵 B.零矩阵 C.上三角矩阵 D.对角矩阵8. 从邻接矩阵可知,该图共有______个顶点。

如果是有向图,该图共有4条有向边;如果是无向图,则共有2条边。

A.9 B.3 C.6 D.1 E.5 F.4 G.2 H.09. 下列说法中正确的是______。

A.一个图的邻接矩阵表示是唯一的,邻接表表示也唯一 B.一个图的邻接矩阵表示是唯一的,邻接表表示不唯一 C.一个图的邻接矩阵表示不唯一,邻接表表示唯一 D.一个图的邻接矩阵表示不唯一,邻接表表示也不唯一10. 用邻接表存储图所用的空间大小______。

A.与图的顶点数和边数都有关 B.只与图的边数有关 C.只与图的顶点数有关 D.与边数的二次方有关11. 采用邻接表存储的图的深度优先搜索算法类似于二叉树的______,广度优先搜索算法类似于二叉树的层次序遍历。

《数据结构》第八章习题参考答案 (1)

《数据结构》第八章习题参考答案 (1)
邻接表表示时:无向图的任意顶点的度=顶点所对应边结点链表中结点个数;
有向图的任意顶点的度=邻接表中顶点所对应边链表中结点个数+逆邻接表中顶点所对应边链表中结点个数;
4、课本P3928.3题
【解答】
n个顶点的无向连通图至少有n-1条边,n个பைடு நூலகம்点的无向强连通图至少有n(n-1)/2条边;n个顶点的有向连通图至少有n条边,n个顶点的有向强连通图至少有n(n-1)条边。
上面不正确的是(A)。
A.(1),(2),(3) B.(1) C.(1),(3) D.(2),(3)
5、下列说法不正确的是(C)。
A.图的遍历是从给定的源点出发每一个顶点仅被访问一次
B.遍历的基本算法有两种:深度遍历和广度遍历
C.图的深度遍历不适用于有向图
D.图的深度遍历是一个递归过程
三、填空题
1、判断一个无向图是一棵树的条件是_有n个顶点,n-1条边的无向连通图_。
注: 答案并不唯一
2、课本P3928.1题
【解答】
(1)不是强连通图
(2)简单路径如:D->B->C->F
(3)略
(4)邻接表见图,其他略
3、课本P3928.2题
【解答】
(1)邻接矩阵表示:无向图的边数为
矩阵中非零元素的个数/2;有向图的边数为矩阵中非零元素的个数。
邻接表表示时:无向图的边数为邻接表中边结点的个数/2;有向图的边数为邻接表中边结点的个数。
(2)(3)略
12、课本P3958.24题
【解答】
A->B : 10
A->B->D: 15
A->B->D->C : 17
A->B->D->E : 17

数据结构课程设计-图的邻接矩阵

数据结构课程设计-图的邻接矩阵

数据结构课程设计报告设计题目:图的邻接矩阵存储结构院系计算机学院年级x 级学生xxxx学号xxxxxxxxxx指导教师xxxxxxxxx起止时间10-6/10-102013年10月10日目录1 需求分析 (3)2 概要设计 (4)2.1 ADT描述 (4)2.2程序模块结构 (5)2.3各功能模块 (6)3详细设计 (7)3.1类的定义 (7)3.2 初始化 (8)3.3 图的构建操作 (8)3.4 输出操作 (9)3.5 get操作 (9)3.6 插入操作 (10)3.7 删除操作 (10)3.8 求顶点的度操作 (11)3.10 判断连通操作 (12)3.11 主函数 (13)4 调试分析 (16)4.1调试问题 (16)4.2 算法时间复杂度 (16)5用户手册 (16)5.1 主界面 (16)5.2 创建图 (17)5.3插入节点 (17)5.4 深度优先遍历 (17)5.5 求各顶点的度 (18)5.6 输出图 (18)5.7 判断是否连通 (19)5.8 求边的权值 (19)5.9 插入边 (19)5.10 删除边 (20)结论 (20)参考文献 (20)摘要随着计算机的普及,涉及计算机相关的科目也越来越普遍,其中数据结构是计算机专业重要的专业基础课程与核心课程之一,为适应我国计算机科学技术的发展和应用,学好数据结构非常必要,然而要掌握数据结构的知识非常难,所以对“数据结构”的课程设计比不可少。

本说明书是对“无向图的邻接矩阵存储结构”课程设计的说明。

首先是对需求分析的简要阐述,说明系统要完成的任务和相应的分析,并给出测试数据。

其次是概要设计,说明所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次关系,以及ADT描述。

然后是详细设计,描述实现概要设计中定义的基本功操作和所有数据类型,以及函数的功能及代码实现。

再次是对系统的调试分析说明,以及遇到的问题和解决问题的方法。

然后是用户使用说明书的阐述,然后是测试的数据和结果的分析,最后是对本次课程设计的结论。

练习题(第6章)

练习题(第6章)

第六章的练习题一、选择题1.设无向图的顶点个数为n ,则该图最多有( )条边。

A .n-1B .n(n-1)/2C . n(n+1)/2D .0E .n2 2.一个n 个顶点的连通无向图,其边的个数至少为( )。

A .n-1B .nC .n+1D .nlogn ; 3.要连通具有n 个顶点的有向图,至少需要( )条边。

A .n-lB .nC .n+lD .2n 4.n 个结点的完全有向图含有边的数目( )。

A .n*nB .n (n +1)C .n /2D .n*(n -l ) 5.一个有n 个结点的图,最少有( )个连通分量,最多有( )个连通分量。

A .0 B .1 C .n-1 D .n6.在一个无向图中,所有顶点的度数之和等于所有边数( )倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的( )倍。

A .1/2B .2C .1D .47.一个图中包含K 个连通分量,若按深度优先搜索方法访问所有结点,则必须调用( )次深度优先搜索遍历算法。

A .1B .K-1C .KD .K+1 8.下列哪一种图的邻接矩阵是对称矩阵?( )A .有向图B .无向图C .AOV 网D .AOE 网9. 从邻接阵矩可以看出,该图共有(①)个顶点;如果是有向图该图共有(②) 条弧;如果是无向图,则共有(③)条边。

①.A .9 B .3 C .6 D .1 E .以上答案均不正确 ②.A .5 B .4 C .3 D .2 E .以上答案均不正确 ③.A .5 B .4 C .3 D .2 E .以上答案均不正确 10.对某个无向图的邻接矩阵来讲,( )。

A .第i 行上的非零元素个数和第i 列的非零元素的个数一定相等B .矩阵中的非零元素个数等于图中的边数C .第i 行上,第i 列上非零元素总数等于顶点vi 的度数D .矩阵中非全零行的行数等于图中的顶点数11.无向图G=(V,E),其中:V={a,b,c,d,e,f},E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)},对该图进行深度优先遍历,得到的顶点序列正确的是( )。

全国硕士研究生入学统一考试计算机科学与技术学科联考数据结构题库 典型题(图)【圣才出品】

全国硕士研究生入学统一考试计算机科学与技术学科联考数据结构题库  典型题(图)【圣才出品】

5.2 典型题(含历年真题)详解一、单项选择题1.设有向图G=(V,E),顶点集V={V0,V1,V2,V3},边集E={<V0,V1>,<V0,V2>,<V0,V3>,<V1,V3>},若从顶点V0开始对图进行深度优先遍历,则可能得到的不同遍历序列个数是()。

[2015年联考真题]A.2B.3C.4D.5【答案】D【解析】根据题意知有向图的结构如图所示。

深度优先遍历的特点是尽可能先对纵深方向进行搜索,所以可能得到的不同遍历序列分别是:①V0→V2→V1→V3;②V0→V2→V3→V1;③V0→V1→V3→V2;④V0→V3→V2→V1;⑤V0→V3→V1→V2。

2.对如下所示的有向图进行拓扑排序,得到的拓扑序列可能是()。

[2014年联考真题] A.3,1,2,4,5,6B.3,1,2,4,6,5C.3,1,4,2,5,6D.3,1,4,2,6,5【答案】D【解析】拓扑排序方法如下:(1)从有向图中选择一个没有前驱(即入度为0)的顶点并且输出它;(2)从图中删去该顶点,并且删去从该顶点发出的全部有向边;(3)重复上述两步,直到剩余的网中不再存在没有前趋的顶点为止。

对于此有向图进行拓扑排序所有序列为:3,1,4,6,2,5和3,1,4,2,6,5。

所以选D3.设图的邻接矩阵A如下所示,各顶点的度依次是()。

[2013年联考真题]A.1,2,1,2B.2,2,1,1C.3,4,2,3D.4,4,2,2【答案】C【解析】当图用邻接矩阵存储时,各顶点的度是矩阵中此结点对应的横行和纵列非零元素之和。

4.下列AOE网表示一项包含8个活动的工程。

通过同时加快若干进度可以缩短整个工程的工期。

下列选项中,加快其进度就可以缩短工程工期的是()。

[2013年联考真题]A.c和eB.d和eC.f和dD.f和h【答案】C【解析】根据AOE网的定义可知,同时缩短几条关键路径上的活动时间,可以缩短整个工期。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
v=Q[++front];//将顶点v出队列
for(int j=0;j<vertexNum;j++)
{
if(arc[v][j]==1&&visited[j]==0)
{
cout<<vertex[j]<<"\t";
visited[j]=1;
Q[++rear]=j;
}//第一次错在此处
}
//for(int j=0;j<vertexNum;j++)
{
count++;
}
}
return count;
}
template<class T>
MGraph<T>::MGraph(T a[],int n,int e)
{
int i,j;
vertexNum=n;
arcNum=e;
for( i=0;i<vertexNum;i++)
vertex[i]=a[i];
for(i=0;i<vertexNum;i++)
MGraph<char> x(a,4,5);
for(int i=0;i<MaxSize;i++)
visited[i]=0;
cout<<"深度优先遍历"<<endl;
x.DFSTraverse(0);
cout<<endl;
for(int i=0;i<MaxSize;i++)
visited[i]=0;
cout<<"广度优先遍历"<<endl;
void MGraph<T>::DFSTraverse(int v)
{
cout<<vertex[v]<<"\t";
visited[v]=1;
for(int j=0;j<vertexNum;j++)
{
if(arc[v][j]==1&&visited[j]==0)
DFSTraverse(j);
}
}
template<class T>
int arc[MaxSize][MaxSize];//盛放边的关系的二维数组,有关系输出1
int vertexNum;//顶点数
int arcNum;//边数
public:
MGraph(T a[],int n,int e);//构造函数,构造一个n个顶点,e条边的图
void DFSTraverse(int v);//深度优先遍历图
x.BFSTraverse(0);
cout<<endl;
cout<<"请输入你想要查询的度的顶点,'V0'为第0个顶点,'V1'为第1个顶点,'V2','V3'"<<endl;
int i;
cin>>i;
cout<<x.Du(i);
}
//{
//if(arc[v][j]==1&&visited[j]==0)
//cout<<vertex[j]<<"\t";
//visited[j]=1;
//Q[++rear]=j;
//}
}
}
int visited[MaxSize]={0};
void main()
{
char a[]={'V0','V1','V2','V3'};
void MGraph<T>::BFSTrrtex[v]<<"\t";
visited[v]=1;
int Q[MaxSize];//建立一个队列
int front=-1;
int rear=-1;
Q[++rear]=v;//将顶点v进队列
while(front!=rear)
void BFSTraverse(int v);//广度优先遍历图
int Du(int i);//查询某个顶点的度
};
template<class T>
int MGraph<T>::Du(int i)
{
int count=0;
for(int j=0;j<vertexNum;j++)
{
if(arc[i][j]==1)
for (j=0;j<vertexNum;j++)
arc[i][j]=0;
for(int k=0;k<arcNum;k++)
{
//cin>>i>>j;有问题吗?没有问题
cout<<"请输入两个顶点的序号"<<endl;
cin>>i;
cin>>j;
arc[i][j]=1;
arc[j][i]=1;
}
}
template<class T>
//附带错误提示处
#include <iostream>
using namespace std;
const int MaxSize=10;
template<class T>
class MGraph
{
private:
T vertex[MaxSize];//盛放顶点的信息的一维数组,如"v0","v1","v2"
相关文档
最新文档