Я пытаюсь удалить все определенные ключевые элементы в моем связанном списке в одной функции.
то есть если связанный список имеет 1 2 2 3 4 4 5 5 8 2 6 32 4 6 7 7, тогда, если я передам функцию 2, эта функция удалит все 2 в связанном списке
мой связанный список здесь
class float_list
{
struct node
{
double data;
struct node *next;
};
node *head;
public:
float_list(void)
{
head = nullptr;
};
void appendNode(double);
void print_list();
void deleteNode(double);
};
теперь мой deleteNode (здесь двойник)
void float_list::deleteNode(double num)
{
node *nextptr, *previousptr = nullptr;
nextptr=head;
if(!head->data){return;}
if(head->data==num)
{
nextptr= head->next;
delete head;
head = nextptr;
}
else
while(nextptr)
{
previousptr= nextptr;
if(nextptr->data==num)
{
previousptr->next = nextptr->next;
delete nextptr;
cout<<"I Found the --> "<<num<<" is going to be deleted"<<endl;
nextptr = previousptr;
//nextptr = nextptr->next;
}
nextptr = nextptr->next;
}
delete nextptr;
delete previousptr;
}
Я пытался разными способами, но всегда получаю ошибку нарушения прав доступа. Пожалуйста, дайте мне концептуальные и кодовые подсказки, если это возможно. Спасибо
код в приложении win32 Vs2010