2015-02-03 3 views
-1

Следующий псевдокод удаляет узел из связанного списка.Связанные списки (удаление и поиск)

void list::erase()//Deletes a node 
{ 
cout<< "Enter a position: "; 
cin>> pos; 
if(pos==1) 
{ 
    current=head; 
    head=head->ptr; 
} 
else 
{ 
    current=head; 
    for(i=0; i<pos-1; i++) 
    {   
     temp=current; 
     current=current->ptr; 
    } 
     temp->ptr=current->ptr; 
} 
cout<< "Erased string: " << current->content<<"\t"; 

current=head; 
while(current!=NULL) 
{ 
    cout<<current->content<<"\t"; 
    current=current->ptr; 
} 
} 

Мне нужно, чтобы отобразить сообщение в случае, если я удалить строку, которая не в списке: Там нет такой строки. Что мне делать?

Следующий псевдокод выполняет поиск узла в связанном списке.

void list::search()//Searches a node 
{ 
    char str[50]; 
    cout<<"Enter a string: "; 
    cin>> str; 
    current=head; 
    while(current!=NULL) 
    { 
     pos++; 
     if(!strcmp(current->content, str)) 
     { 
      cout<< "Found at "<<pos; 
     } 
      current=current->ptr; 
    } 
} 

Если я ищу строки которая не в списке и отобразить сообщение соответственно: Там нет такой строки. Что мне делать? Пожалуйста помоги.

+0

Что именно здесь не работает? функция поиска выглядит нормально, за исключением того, что сообщение отсутствует, если строка не найдена. – Pandrei

+0

@Pandrei Например: В списке: 1 2 3 4, если я ищу 5, тогда сообщение будет отображаться как: Не найдено. (4 раза (до тех пор, пока цикл не будет выполняться n раз)) – ShubhGOYAL5

+0

положил результат после «Fount at» и положил строку cout << «не найден» после цикла while. –

ответ

0

перед вводом while loop установить переменную found= false. Вы изменяете значение переменной только в том случае, если найдете нужную строку, и после этого вы печатаете:

found = false; 
while(current!=NULL) 
{ 
    pos++; 
    if(!strcmp(current->content, str)) 
    { 
     found = true; 
     break; 
    } 
    current=current->ptr; 
} 
if (found) 
    cout<< "Found at "<<pos; 
else 
    cout<< "Not Found"; 
+0

И что я могу сделать в случае удаления? – ShubhGOYAL5

+0

Я не вопрос об удалении; что вы имеете в виду, удалить строку, которой нет в списке? если его нет в списке, как его удалить? – Pandrei

+0

Ничего. Спасибо. – ShubhGOYAL5

Смежные вопросы