[英]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.