2
노드리스트를 만들려고하고 있는데,리스트가 루프로 바뀐다 고 생각하지만 어떻게 될지 모르겠습니다! 다음은이를 수행하는 데 사용되는 두 가지 방법입니다.무한 링크드리스트 문제
GraphNode 클래스
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만큼. 그러나 각 삽입 후에 링크 된 목록을 인쇄하려고하면 목록의 첫 번째 노드로 생각되는 내용이 무제한으로 인쇄됩니다.