이 중첩 된 while 루프가 있는데, 파일에서 라인을 읽어 들여 인접 목록을 만듭니다. 문제는 내부 루프가있는 것 같지 않습니다. 내부 루프를 통과하기 때문에 발생하지만, 파일의 마지막 지점을 인접 목록에 저장하기 전에 실행이 중지됩니다. 필자는 크기가 다른 여러 파일로 테스트 해봤습니다. 가장 마지막 시점 이전에 항상 옳았습니다. 나는 왜 그 일을 할 지 알 수는 없지만 다른 누군가가 나를 도울 수 있습니까?While 루프가 끝나기 전에 항상 멈춰 있습니다.
파일의 행은 current-> 다음 배열에 잘 저장되어 있습니다. 문제가있는 newPt 인접 목록 중 마지막 행입니다. 사실, 마지막으로 while 루프에 들어가기 때문에 마지막 두 줄을 실행하는 것처럼 보이지 않습니다.
struct line {
int u;
int v;
int w;
int useful;
struct line *next;
};
struct adjacent {
int x;
int onqueue;
struct adjacent *adj;
};
struct adjacent *aList[num+1];
struct line *current;
struct adjacent *currentPt;
이 코드에서 오류 검사가 없으므로 여러 가지 일이 잘못되어 디버그하기가 어려울 수 있습니다. 1 : "aList [u]"가 오버플로가 아니도록 "u"가 올바른 범위에 있는지 확인하십시오. 2 : "% d"는 아마 "% u"이어야합니다. 음수를 원하지 않으므로 적어도 "u"는 "% u"여야합니다. 3 : "aList"는 어떻게 초기화됩니까? 이웃입니까? aList [SIZE]; 또는 인접 * aList [SIZE]; ? 후자의 경우이 항목을 어떻게 초기화합니까? "SIZE"더미 노드를 할당 할 것인가? – joeking
"달리기 중지"란 무엇을 의미합니까? 그것은 잘못 되었습니까? 아니면 종료합니까? –
@joeking 이들 모두는 프로그램이 사용하려는 파일을 기반으로 계산됩니다. 음수는 없으며 (그래프에 정점으로 표시), aList는 지정된 정점 수 인 num을 사용하여 초기화되고 모든 정점은 건너 뛰지 않고 보통 순서 1, 2, 3 등으로 계산됩니다 아무것도. –