Привет, я создал функцию, которая вставляет введенные значения в отсортированный связанный список, и теперь я пытаюсь создать другую функцию для удаления введенного значения в связанном списке. В настоящее время я получаю бесконечный цикл рик-джемов, и это невероятно расстраивает.
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;
}
логика функций выглядит нормально для меня...
Если вы все время получаете "RICK JAMES", это означает, что он не может найти удаляемый узел - может быть, что-то не так с тем, как вы сравниваете значение узла с параметром функции...
функция принимает
ListItemType & removedItem
который кажется немного странным для типа int datatype, но я не уверен, как поле "item" определено в ListNode... Я бы предложил дважды проверить это. Удачи!