软件构造实验二思考

实验二的第二题与实验一第三题相关,放在一起看一看

第一题诗意漫步

第一题就简单说一说

这个任务总体分成了两大部分,其中第一部分是要我们自己用两种不同的方式设计一个图类,是带有标记顶点的可变加权有向图的抽象数据类型。首先我们需要根据提示先对测试用例进行设计,然后分别完成针对String的边实现和点实现,然后进一步将可以支持的类型拓展到泛型。实验这一部分完成之后还需要根据这个图形结构生成一个诗歌生成工具,添加一些满足条件的词语到语句中。

在这个题主要是练习构造类,实现方法,AF RI safety from rep exposure

第二题社交网

先说一下和实验一有关部分

设计friendship graph类

public boolean addVertex(Person person)

将person这个节点添加到persons中,同时判断是否存在重名的问题,如果有,直接返回false,如果没有,就将其名字加入names中,返回true。

public boolean addEdge(Person per1, Person per2)

两次调用Person类中的addFriend函数即可,同时注意判断两个人是否是同一个人,并返回对应结果

使用了广度优先搜索:初始化visited中的每个点的vis属性为false,dis中的为0将per1加入队列temp,并visited.put(src.getName(), true)检查队列是否为空 若是,结束循环,返回-1 若否,取出队首节点存入vertex,重复之前操作搜索per1的friends set(在Person类中实现)中未访问过的节点 如果有子节点等于per2,即找到一条最短路,结束搜索,返回当前的路径长度 否则,将满足要求的子节点依次加入队列,将其visited对应值置为true所有满足条件的子节点扫描完之后,对应节点的dis ++;

设计person类

存储名字和朋友,来实现单边关系。

关于第二部分

在实验二第一题进行修改

1.FriendshipGraph的字段为Person构成的ConcreteEdgesGraph,定义私有类型的表如下图所示:

2.需要实现的方法

构造方法 FriendshipGraph

在图中新增加person,调用之前在ConcreteEdgesGraph中写过的的add  addVertex

为某个人增加朋友调用ConcreteEdgesGraph中的set addEdge

getallprople   直接返回即可:

得到两个人之间的最短距离 getDistance

主函数

.私有类型表

2.实现方法

Person 没有重复名字加入

getmyname 返回本人名字,直接返回即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值