题目
42.(10分)某网络中的路由器运行 OSPF路由协议,题 42表是路由器R1维护的主要链路状态信息(LSI),题 42图是根据题 42表及R1的接口名构造出来的网络拓扑。
请回答下列问题。
1)本题中的网络可抽象为数据结构中的哪种逻辑结构?
2)针对题 42表中的内容,设计合理的链式存储结构,以保存题 42 表中的链路状态信息(LSI)。要求给出链式存储结构的数据类型定义,,并画出对应题 42 表的链式存储结构示意图(示意图中可仅以ID标识结点)。
3)按照迪杰斯特拉(Dijkstra)算法的策略,依次给出R1到达题42 图中子网192.1.x.x 的最短路径及费用。
考察在给出具体模型时,数据结构的应用。该题很多考生乍看之下以为是网络的题目,其实题本身并没有涉及太多的网络知识点,只是应用了网络的模型,实际上考察的还是数据结构的内容。
(1)图(1分)
题中给出的是一个简单的网络拓扑图,可以抽象为无向图。
【评分说明】
只要考生的答案中给出与图含义相似的描述,例如"网状结构"、"非线性结构"等,同样给分。
(2)链式存储结构的如下图所示
其数据类型定义如下∶(3分)
typedef struct{
unsigned int ID, IP;
}LinkNode; //Link 的结构
typedef structf{
unsigned int Prefix, Mask;
}NetNode; //Net 的结构
typedef struct Node{
int Flag; //Flag=1为Link;Flag=2为Net
union{
LinkNode Lnode;
NetNode Nnode
}LinkORNet;
unsigned int Metric;
struct Node *next;
}ArcNode; //弧结点
typedef struct HNode{
unsigned int RouterID;
ArcNode *LN link;
Struct HNode *next;
}HNODE; //表头结点
对应题 42表的链式存储结构示意图如下。(2分)
【评分说明】
①若考生给出的答案是将链表中的表头结点保存在一个一维数组中(即采用邻接表形式),同样给分。
②若考生给出的答案中,弧结点没有使用 union定义,而是采用两种不同的结构分别表示 Link 和 Net,同时在表头结点中定义了两个指针,分别指向由这两种类型的结点构成的两个链表,同样给分。
③考生所给答案的弧结点中,可以在单独定义的域中保存各直连网络 IP 地址的前缀长度,也可以与网络地址保存在同一个域中。
④数据类型定义中,只要采用了可行的链式存储结构,并保存了题目中所给的LSI信息,例如将网络抽象为一类结点,写出含8个表头结点的链式存储结构,均可参照(1~③的标准给分。
⑤若考生给出的答案中,图示部分应与其数据类型定义部分一致,图示只要能够体现链式存储结构及题42 图中的网络连接关系(可以不给出结点内细节信息),即可给分。
⑥若解答不完全正确,酌情给分。
(3)计算结果如下表所示。(4分)
【评分说明】
①若考生给出的各条最短路径的结果部分正确,可酌情给分。
②若考生给出的从R1到达子网192.1.x.x的最短路径及代价正确,但不完全符合代价不减的次序,可酌情给分。

多做几道

41.(10 分)带权图(权值非负,表示边连接的两顶点间的距离)的最短路径问题是找出从初始顶点到目标顶点之间的一条最短路径。假设从初始顶点到目标顶点之间存在路径,现有一种解决该问题的方法∶
①设最短路径初始时仅包含初始顶点,令当前顶点u为初始顶点;
② 选择离u最近且尚未在最短路径中的一个顶点v,加入最短路径中,修改当前顶点u=v;
③ 重复步骤②,直到u是目标顶点时为止。
请问上述方法能否求得最短路径?若该方法可行,请证明之;否则,请举例说明。
42. (5分)已知一个带有表头结点的单链表,结点结构为
Data/link
假设该链表只给出了头指针 list。在不改变链表的前提下,请设计一个尽可能高效的算法;查找链表中倒数第k个位置上的结点(k为正整数)。若查找成功,算法输出该结点的 data 域的值,并返回1∶否则,只返回0。要求∶
1)描述算法的基本设计思想。
2)描述算法的详细实现步骤。
3)根据设计思想和实现步骤,采用程序设计语言描述算法(使用C、C++或 Java 语言实现),关键之处请给出简要注释。
43.(8分)某计算机的CPU主频为 500Mz,CPI为5(即执行每条指令平均需5个时钟周期)。假定某外设的数据传输率为 0.5MB/s,采用中断方式与主机进行数据传送,以 32 位为传输单位,对应的中断服务程序包含 18条指令,中断服务的其他开销相当于2条指令的执行时间。请回答下列问题,要求给出计算过程。
1)在中断方式下,CPU用于该外设I/O的时间占整个CPU时间的百分比是多少?
2)当该外设的数据传输率达到5MB/s 时,改用DMA 方式传送数据。假定每次 DMA传送块大小为 5000B,且DMA预处理和后处理的总开销为 500个时钟周期,则 CPU用于该外设 I/O 的时间占整个 CPU时间的百分比是多少(假设 DMA与CPU 之间没有访存冲突)?
44.(13 分)某计算机字长为16位,采用16位定长指令字结构,部分数据通路结构如下图所示,图中所有控制信号为1时表示有效、为 0时表示无效。例如,控制信号MDRinE 为1表示允许数据从 DB打入 MDR,MDRin为1表示允许数据从内总线打入 MDR。假设 MAR 的输出一直处于使能状态。加法指令"ADD(R1),RO"的功能为(RO)+(R1))→(R1),即将R0中的数据与 R1的内容所指主存单元的数据相加,并将结果送入 R1的内容所指主存单元中保存。
下表给出了上述指令取指和译码阶段每个节拍(时钟周期)的功能和有效控制信号。请按表中描述方式用表格列出指令执行阶段每个节拍的功能和有效控制信号。
时钟:功能/有效控制信号
C1:MAR←(PC)/PCout, MARin
C2:MDR←M(MDR) PC←(PC)+1/MemR, MDRinE, PC+1
C3:IR←(MDR)/MDRout, IRin
C4:指令译码/无
45.(7分)三个进程P1、P2、P3互斥使用一个包含N(N>0)个单元的缓冲区。
P1每次用 produce()生成一个正整数并用 putO)送入缓冲区某一空单元中;P2每次用 getodd()从该缓冲区中取出一个奇数并用countodd()统计奇数个数;P3每次用 geteven()从该缓冲区中取出一个偶数并用 counteven()统计偶数个数。请用信号量机制实现这三个进程的同步与互斥活动,并说明所定义信号量的含义(要求用伪代码描述)。

该科目易错题

该题目相似题