このネストされた while ループを使用して、ファイルから行を読み取り、隣接リストを作成しています。問題は内部ループにあるようには見えませんが、それはそれを通過するためですが、ファイルから最後のポイントを隣接リストに保存する直前に実行を停止します。いくつかの異なるファイル (異なるサイズ) でテストしましたが、常に最後のポイントの直前です。私は一生、それがなぜそれをするのか理解できませんが、他の誰かが私を助けることができるでしょうか?
ファイルからの行は、現在の->次の配列に問題なく保存されます。これは、私が問題を抱えているnewPt隣接リストの最後のものです。実際、最後に while ループに入っていて、最後の数行を実行できないようです。
while(fscanf(fptr, "%d %d %d", &u, &v, &w) != EOF) { //read from file
current->next=malloc(sizeof(struct line));
current=current->next;
current->u=u;
current->v=v;
current->w=w;
current->useful=0;
//add point to adjacency list
currentPt=aList[u];
while((currentPt->adj)!=NULL) {
currentPt=currentPt->adj;
}
newPt=malloc(sizeof(struct adjacent));
newPt->x=v;
newPt->adj=NULL;
currentPt->adj=newPt;
}
それが役立つ場合、これらは私が使用している構造です:
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;