在Lab1实验三中对人际关系的搜索中需要使用广度搜索。由于Java中没有提供现成的队列,我对当时的Person类额外添加了两个属性,一个是是否已经访问的标志 isVisited和用于广度遍历时记录层数的length
package P3;
import java.util.*;
public class Person {
public int length;
public String name;
public boolean isVisited;
public Listneighborlist;
public Person(String name) {
this.name = name;
length = 0;
isVisited = false;
neighborlist = new ArrayList();
}
}
手写了一个很简单的队列
package P3;
import java.util.*;
public class MyQueue {
public List QueueList;
public MyQueue(){
QueueList = new ArrayList();
}
public void Offer(Person name) {
QueueList.add(name);
}
public Person Poll() {
if(QueueList.isEmpty()) {
return null;
}
return QueueList.remove(0);
}
}
这里使用了动态数组,所以入队操作直接使用add,加到数组尾部而pop是将队头元素抛出所以用remove(0)实现。