软件构造实验2 Poetic Walks

软件构造实验2Walks
题目的2.1的要求
【软件构造实验2 Poetic Walks】我们需要实现一个抽象数据类型图,需要完成图的一系列方法 。
整体的实验过程就不细说了,主要讲一个里面需要实现的方法 。
set
/**
* Add, , oraedge in this graph.
* Ifis , add an edge ortheof that edge;
*with the givenare added to the graph if they do not
*exist.
* Ifis zero,the edge if it(the graph is not
*).
* @paramlabel of the
* @paramlabel of the
* @paramof the edge
* @ theof the edge, or zero if there was no such
* edge,返回-1如果输入的权值是负数.
*/
规约是这样的,总之就是是0则删除边;
大于0则设置边或更新权重(如果点还没在点集里需要使点增加到点集)(返回之前的权重 , 如果之前没有就返回0);
小于零则报错 。
@Override public int set(L source, L target, int weight) {//throw new RuntimeException("not implemented");if(weight<0) {System.out.println("权值不能是负数");checkRep();return -1;}else if (weight > 0) {//添加或更新Iterator> iterator1 =edges.iterator();while(iterator1.hasNext()) {Edge tmp=iterator1.next();if(tmp.getsource().equals(source)&&tmp.gettarget().equals(target)) {int pre=tmp.getweight();iterator1.remove();Edge newone = new Edge(source,target,weight);edges.add(newone);checkRep();return pre;}}vertices.add(target);vertices.add(source);Edge newone = new Edge(source,target,weight);edges.add(newone);checkRep();return 0;}else {//weight为0int pre = 0;Iterator> iterator1 =edges.iterator();while(iterator1.hasNext()) {Edge tmp=iterator1.next();if(tmp.getsource().equals(source)&&tmp.gettarget().equals(target)) {pre=tmp.getweight();iterator1.remove();break;}}checkRep();return pre;}}
我的代码也是基于这三种情况进行考虑的 。
注意就是用去进行等值比较 。