簡體   English   中英

鏈表無限循環問題

[英]Linked list infinite loop issue

我正在處理一個哈希表,並且用戶可以從哈希表的每個索引中更新該索引的鏈接列表,並為該哈希表索引中的人創建朋友列表。 我已成功將名稱添加到列表中,但似乎無法弄清楚如何打印它們。 我不斷得到一個無限循環,反復打印列表中的名字。

void printFriends(char *name){
    struct node *myNode=searchForPerson(name); //returns address of node in the hash

    if(myNode->nxtfriend==NULL)
        printf("No Friends\n");

    while(myNode!=NULL){
        printf("%s ",myNode->value);
        myNode=myNode->nxtfriend;
    }
    printf("\n");
}

 void insertFriend(char *name,char *friend){
struct node *friendee=searchForPerson(name);
struct node *newfriend=createFriend(friend);

if(friendee->nxtfriend==NULL)
    friendee->nxtfriend=newfriend;

if(friendee->nxtfriend!=NULL){
    newfriend->nxtfriend=friendee->nxtfriend;
    friendee->nxtfriend=newfriend;
}

insertFriend ,創建一個指向自身的節點。

首先,檢查最后一個節點( if(friendee->nxtfriend==NULL) friendee->nxtfriend=newfriend; )會將friendee->nxtfriend指向新朋友。 然后在下nxtfriend語句中,如果nxtfriend不為NULL(不是因為您只是將其設置為nxtfriend ),則將newFriend->nxtfriend設置為friendee->nxtfriend ,您只需將其設置為newFriend 這將導致newFriend->nxtfriend == newFriend ,並導致無限循環。

重新考慮如何將節點插入列表中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM