0
嘿,我創建了一個函數,將輸入的值插入已排序的鏈接列表中,現在我試圖創建另一個函數來刪除鏈接列表中輸入的值。目前我正在陷入無限循環的裏克詹姆斯,這令人難以置信的令人沮喪。刪除已排序的鏈接列表中的值
typedef int ListItemType; // global value in my header file
ListItemType item; // assigned in head file under ListNode struct
bool List::remove(const ListItemType& removedItem) {
ListNode *curr = head;
ListNode *prev = NULL;
//empty list
if(head == NULL){
cout<< "No items in the list";
}else{
//traverse the list
while(curr != NULL){
if(curr->item == removedItem){
break; //data has been found break loop
}else{
//increment loop
prev = curr;
curr = curr->next;
}
}//end while
//data has not been found
if(curr == NULL){
cout << "RICK JAMES";
}else{
//data has been found delete data
// case 1: delete at head node
if(head == curr){
head = head->next;
}else{
// case 2: delete after head
prev->next = curr->next;
}
delete curr;
size--;
return true;
}
}
return false;
}
因此我擺脫了ListItem類型,並且現在在我的節點的結構中有int項目,並且我刪除了if(curr == NULL)語句並在循環中的該點打印出curr-> item的值並發現它正確循環並且不刪除該值。除了刪除它應該結束的值之外,它會繼續,現在我得到一個未處理的execption NULL引用異常,對象引用未設置爲ojbect的實例。 –
所以在調試器中,我發現prev-> next = curr-> next;是導致我崩潰的線,但我不知道爲什麼 –
uggg。所以我得到它的工作,所有我需要的是一個返回語句後 –