2014年数据结构应用题深度解析

2014年数据结构应用题

做题感受

恶心 答案更是恶心 把这个答案读出来更是恶心!

题目

基本思路

第一小问

  • (1)首先对于这个小问而言 显然是将该网络抽象为网图或者图
  • 具体原因:首先逻辑结构 分为线性和非线性 显然这个网络是属于非线性结构 而对于非线性结构而言我们熟知的就是图和树 但是这个网络它并不具有明显的层级结构 所以应该将这个网络抽象为图来存储

第二小问

  • (2)基于第一小问 我们将该网络抽象为图 而对于图我们一般采用邻接矩阵或者邻接表来存储
    而题目要求我们采用链式存储结构 所以显然考察的我们邻接表的相关知识 而且特殊的考察的是网图 我们不仅需要存储每个节点的信息还需要保存 权值
  • 所以题目要求给出链式存储结构的类型定义 我们应该这么来思考:
  • 我们可以将我们需要保存的这张表格纵向来看 也就是从一个路由器出发 保存它所有邻居节点的信息 而对于这道题而言 这个邻居不仅有邻居路由器还有与它直连的网络 所以我们在定义结构体的时候我们需要分别来定义
  • 我们当前基本思路:
  • 1 首先保存我们当前节点的IP地址 然后还需要两个指针 他们分别指向邻居路由器和直连网络 然后我们再此基础之上分别把这两种数据类型给他定义一下就好了 因为这两种需要保存的内容是不一样的
  • 我们邻居路由器当中应该保存的是 ID IP 权值Metric 我们的直连网络节点当中他应该保存的是网络IP地址和子网掩码 以及权值Metric
  • 最后由于我们现在只是保存了从一个路由器出发到达它邻居结点的信息 但是我们需要保存的整个链路状态信息 所以我们需要将它穿起来 所以还需要定义一个指向下一个相同节点类型的指针
  • 其实我觉得采用数据才存储头结点也是可以的 那么就需要在结构体的末尾定义一个相同类型的数组来保存我们的节点信息 这个是和邻接表是一致的
  • 这就是第二小问的基本框架 其实我不太建议大家跟标准答案那样写 其实真正在考场上面是根本想不到的
  • 所以我觉得总的来说就是联想到网图的一个存储方式和结构体的类型定义 然后类比到我们这道题 这是一个比较可行的考场思路
结构类型定义
cpp 复制代码
//从某个路由器出发
typedef struct Node{
    int RounterID;
    //分别定义两个指针域用于指向邻居路由器和直连网络
    struct net_node * next1;
    struct LNode * next2;
    //由于我们需要的信息是整个网络的 所以我们需要将每个路由器与它邻居的信息穿起来
    struct Node *next;
}Node;
typedef struct LNode{
    int rounter_ID;
    int Link_IP;
    int Metric;
    struct LNode *next;
}LNode;
typedef struct net_node{
    int prefix;//网络IP地址
    int mask;//子网掩码
    int Mertic;
    struct net_node* next;
}NNODE;

第三小问

考察迪杰斯特拉算法 目的是给出R1到达所有子网的最短路径和对应权值之和

*我们可以给这个四个网络分别编号 :
NET1------192.1.1.0/24
NET2------192.1.5.0/24
NET3------192.1.6.0/24
NET4------192.1.7.0/24*

那么就可以得到R1到每个目的网络的最短路径 我们可以以表格的方式来呈现:

目的网络 路径长度(费用) 下一跳

NET 1 --- 1 --------------------- 直连

NET 2 --- 4 --------------------- R2

NET 3 --- 9 --------------------- R2

NET 4 --- 2----------------------- R3

总结

我觉得这道题在考场上面想要做对是要求很高的 尤其2014年的408在前面已经考了一个计算WPL的题 写的顺利还好 但是我觉得这对不熟悉树和图相关知识的朋友是非常折磨的 一开始就连空两道大题这是很难接受的
2014年数据结构大题 线性表一点不考 反倒将数组和链表融合到操作系统大题里面去了 真nm (# ^. ^ #)
选择还可以 但是大题整体做着就不是很舒服了 反倒我觉得计组是比较正常的难度 fighting!

相关推荐
小龙报21 小时前
算法通关指南:数据结构和算法篇 --- 队列相关算法题》--- 1. 【模板】队列,2. 机器翻译
c语言·开发语言·数据结构·c++·算法·学习方法·visual studio
晨非辰1 天前
【数据结构初阶】--从排序算法原理分析到代码实现操作,参透插入排序的奥秘!
c语言·开发语言·数据结构·c++·算法·面试·排序算法
三川6981 天前
排序算法介绍
数据结构·算法·排序算法
学编程就要猛1 天前
数据结构初阶:Java中的Stack和Queue
数据结构
是苏浙1 天前
零基础入门C语言之C语言实现数据结构之顺序表
c语言·开发语言·数据结构
星释1 天前
Rust 练习册 :Matching Brackets与栈数据结构
数据结构·算法·rust
逐步前行1 天前
C数据结构--排序算法
c语言·数据结构·排序算法
_dindong2 天前
笔试强训:Week-4
数据结构·c++·笔记·学习·算法·哈希算法·散列表
陌路202 天前
S12 简单排序算法--冒泡 选择 直接插入 希尔排序
数据结构·算法·排序算法
papership2 天前
【入门级-算法-5、数值处理算法:高精度的乘法】
数据结构·算法