Моя программа должна выполнять 3 операции:
- Вставлять
- Удалить
- Показать в круговом связном списке.
Моя проблема в функции удаления. вот код:
void c_list::del()
{
int num;
if(isempty())
cout<<"List is Empty!"<<endl;
else
{
node *temp1=first;
node *temp2=NULL;
cout<<"Enter the number that u want to DELETE:"<<endl;
cin>>num;
while(temp1->next!=first && temp1->info != num)
{
temp2=temp1;
temp1=temp1->next;
}
if(num != temp1->info )
cout<<"your number was not found in the list"<<endl;
else
{
if(temp2!=NULL)
{
temp2->next=temp1->next;
cout<<temp1->info<<" was deleted"<<endl;
}
else
{
first=temp1->next;
cout<<temp1->info<<"was deleted"<<endl;
}
}
}
system("pause");
}
Функция удаления работает следующим образом: пользователь вводит число, программа ищет это число и, найдя номер, удаляет его из списка.
Теперь проблема в том, что, когда пользователь вводит номер, которого нет в списке, появляется «Окно сбоя приложения» (я имею в виду это окно: программа не отвечает), в то время как я предоставил сообщение об ошибке для этого случая. («Ваш номер не найден в списке») !!
Вы можете сказать мне, в чем проблема?
temp1->info != num
)? Если это ложь, вы даже не будете выполнять инструкцииif
. - person Mahesh   schedule 13.12.2013first
? - person Christopher Creutzig   schedule 13.12.2013std::cerr << temp1 << std::endl;
в свой цикл while и проверить, не заметили ли вы там цикл, который не включаетfirst
. (Думаю, использование небольших наборов данных для отладки очевидно.) - person Christopher Creutzig   schedule 13.12.2013