与狼共舞哪一部好看吗:加急!!大家快来看看!!我的数据结构作业(java描述),运行不出结果,大家帮改改吧,谢谢了(2)

来源:百度文库 编辑:高考问答 时间:2024/05/04 05:29:29
class Graph
{
private final int max_pers = 20;
private person personlist[]; // list of person
private personlinklist adjlist[]; // adjacency list
private int npers;
private stack thestack;
//-------------------------------------------------------------------
public Graph() { //constructor
personlist = new person[max_pers];
adjlist = new personlinklist[max_pers];
npers = 0;
thestack = new stack();
}

//--------------------------------------------------------------------
public void addperson(int lab, int num) {
personlist[npers++] = new person(lab, num);
npers--;
adjlist[npers++].insert(lab, num);
}

//---------------------------------------------------------------------
public void addedge(int lab1, int num1, int lab2, int num2) {
adjlist[lab1].insert(lab2, num2);
adjlist[lab2].insert(lab1, num1);
}

//---------------------------------------------------------------
public void displayperson(int v) {
System.out.print(personlist[v].label + "," + personlist[v].number);
}

//-----------------------------------------------------------------
public void dfs() {
personlist[0].wasvisited = true;
displayperson(0);
thestack.push(0);

while (!thestack.isempty()) {
int v = getAdjUnvisitedPerson(thestack.peek());
if (v == -1)
thestack.pop();
else {
personlist[v].wasvisited = true;
displayperson(v);
thestack.push(v);
}
} //end while
for (int j = 0; j < npers; j++)
personlist[j].wasvisited = false;
} //end dfs

//------------------------------------------------------------------
public int getAdjUnvisitedPerson(int v) {
person current = adjlist[v].first;
while (current != null) {
if (current.wasvisited == false)
return current.label;
current = current.next;
}
return -1;
}
//-------------------------------------------------------------------
}
/////////////////////////////////////////////////////////////////////

把一道题分成三个问题问,算你狠!