Я пытаюсь понять, как выполняется оператор в состоянии while while(C)
, проверяя, является ли один связанный список пустым.Проверка того, что связанный список пуст в C++
node* remove(nodo*C, int y){
FIFO F;
while(C){
if(C->info==y) {
node* p=C;
C=C->next;
delete p;
}
else {
F=metti_fondo(F,C);
C=C->next;
}
}
if(F.fine)
F.fine->next=0;
return F.primo;
тип данных используется:
struct node{int info; node* next; node(int a=0, node* b=0){info=a; next=b;}};
То, что я, не понимая, как простое обращение узла C достаточно, чтобы проверить, если список не пуст. Разве это не должно быть while(C->next == 0)
или что-то в этом роде? Я проверил, и моя версия не работает, а код, показанный ранее, работает хорошо.
Что он точно проверяет, когда я только ссылаюсь на узел C, без ссылки на информацию или на следующие поля?
Заранее спасибо
Очень простой. Связанный список пуст, если оба указателя головы и хвоста имеют значение NULL. –
Ну, если у него есть хотя бы один элемент, он не пуст, почему вы хотите проверить более одного, когда условие уже выполнено? –
Fyi, 'while (C)' означает ", а C не является нулевым". –