数据结构 期末复习主观题练习题(答案版)

8-1 邻接表的应用场合 (20分)

问答题:使用邻接表存储无向图,为什么要足够稀疏才合算?

答:假设无向图有 n 个点,m 条边,每个点相连 因为邻接表储存无向图的时候,有 n 个顶点就要创建 n 个链表. 每个链表都会存和本顶点相关联的顶点,故每一条边会被存两次。故至少需 m* 2 个节点 而邻接矩阵无论图的稀疏程度,都需要 n*(n+1)/2 的空间存储。

课本P158;

8-2 邻接矩阵的边 (20分)

问答题:使用邻接矩阵存储无向图,如何查看i号顶点和j号顶点之间是否存在边?

无向图的邻接矩阵 A 是一个对称矩阵,每条边会表示两次,因此矩阵中对应位置 A[i][j] 或 A[j][i]是否为 1,若为 1 则判断有边,为 0 则判断无边。

课本P155;

8-3 二叉树先序遍历 (40分)

若采用以下的图示方式存储二叉树,请写出相应的类型定义,并写出基于你的类型定义的二叉树先序遍历算法。
在这里插入图片描述

struct BiTNode{
     
	char data; 
	int lchild,rchild;  
}Tree[100]; 

void preTraverse(int i){
     
	if(i==-1) return ;  
	printf("%d",Tree[i].data);  
	preTraverse(Tree[i].lchild);  
	preTraverse(Tree[i].rchild);  
} 

int main(){
       
	preTraverse(1); 
} 

8-4 邻接表的度 (5分)

问答题:使用邻接表存储有向图,如何求指定顶点的度?

假设有向图的邻接表如下: (课本P156-158)

#define MVNum  100       //最大顶点个数 
typedef struct ArcNode {
      
  int   adjvex;   // 该弧所指向的顶点的位置 
  struct ArcNode  *nextarc;   // 指向下一条弧的指针 
  OtherInfo   info;   // 该弧相关的信息,如权值等,若无信息可缺省 
} ArcNode; 
typedef struct VNode {
     
  VerTexType  data;   // 顶点信息 
  ArcNode  *firstarc;   // 指向第一条依附该顶点的弧 
} VNode, AdjList[MVNum]; 
typedef struct {
      
     AdjList  vertices; 
     int  vexnum
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值