一.Poetic Walks
需要完成两个实例类ConcretVerticesGraph和ConcreateEgdesGraph,实现Graph接口,并按要求实现其完善规约。
要以边和点两种方式实现接口,将String拓展为泛型L。实现ConcretEdgesGrap和ConcreteVertexGraph中接口中定义的各个函数。该过程中要具体实现add(添加新节点),set(添加新边),remove(移除节点),vertices(获得所有结点集合),sources(target)(获得以target为目标节点的边的起始节点),targes(source)(获得以source为起始节点的边的目标节点)。
Poet:根据文件输入,如果相邻两个词之间构成一条有向边,通过Graph接口构造有向图。再输入给定的由单词组成的其句子,若相邻的两个词之间有一个中间单词,则将中间单词插入。若有多个单词,则选取边权重较大的单词插入。
- Get the code and prepare Git repository
$ Git init
$ Git remote add origin git@github.com:ComputerScienceHIT/HIT-Lab2-1190201411jtt.git
$ Git pull origin master
$ Git add .
$ Git commit -m “init”
$ Git push origin master
- Problem 1: Test Graph <String>
以下各部分,请按照MIT页面上相应部分的要求,逐项列出你的设计和实现思路/过程/结果。
将ConcreteEdgesGraph作为Graph<String>的具体实现,静态 Graph.empty()方法的测试在GraphStaticTest.java,为了运行这个测试,首先对Graph<L> empty()进行如下修改:
对GraphStaticTest进行run得到如下测试结果:
- Problem 2: Implement Graph <String>
以下各部分,请按照MIT页面上相应部分的要求,逐项列出你的设计和实现思路/过程/结果。
Implement ConcreteEdgesGraph
- 实现ConcreteEdgesGraph类
函数 |
解释说明 |
ConcreteEdgesGraph() |
对graph中的边和点进行抽象。添加结点,根据权值对边进行添加、修改或删除操作。获得全部结且获得其起点、终点等信息。构建有向图并打印图的信息。 |
checkRep() |
根据数学关系:n个顶点最多构成n*(n-1)/2条有向边,进行检验。source和target不能是null,并且 weight >= 0 |
add(L vertex) |
若vertices中的Set集合中成功添加了顶点string,则返回true |
findEdge(L source, L target) |
判断list是否存在一条指定的边,该边的source和target必须与传入的参数相等,返回该边的index |
set(L source, L target, int |