2
ノードリストを作成しようとしていますが、リストがループに変わったと思いますが、どうやって解決できないのでしょうか?以下は、これを行うために使用される2つの方法です。無限リンクリストの問題
グラフノードクラス
public class GraphNode {
public int nodeID;
public int color;
public int numEdges;
public GraphNode next;
public GraphNode() {
nodeID = 0;
color = 0;
numEdges = 0;
next = null;
}
public GraphNode(int id, int e) {
nodeID = id;
color = 0;
numEdges = e;
next = null;
}
public void setNext (GraphNode next) { this.next = next; } }
constructNodeList法(numNodes = 19、それは入力ファイルから読み込む)これは昇順で各ノードを挿入する必要があり
public void insertOneNode(GraphNode newNode) {
GraphNode current = listHead;
GraphNode temp = current;
while (current.next != null && newNode.numEdges > current.next.numEdges) {
current = current.next;
}
if (current.next == null) current.setNext(newNode);
else {
temp = current.next;
current.setNext(newNode);
newNode.next = temp;
}
}
public void constructNodeList(GraphNode p) {
int edgeCount;
for (int i = 0; i < numNodes; i++) {
edgeCount = 0;
for (int j = 0; j < numNodes; j++) {
System.out.println((i+1) + ", " + (j+1) + ": " + adjMatrix[i][j]);
if (adjMatrix[i][j] == 1) edgeCount++;
}
p.nodeID = i+1;
p.numEdges = edgeCount;
System.out.println(p.nodeID + ": " + p.numEdges);
insertOneNode(p);
}
}
insertOneNode方法各ノードのnumEdgesによって示されます。しかし、それぞれの挿入後にリンクされたリストを印刷しようとすると、リストの最初のノードと思われるものを無制限に印刷します。