2016-03-17 1 views
0

Итак, я работаю над функцией, которая удаляет узел с тем же именем, что и чтение во входном файле. Если это соответствие, узел не должен быть добавлен в новую последовательность. Так Вот что у меня до сих пор, мой предыдущий указатель является недействительным в конце кода я понятие не имею, почемуУдаление узлов и изменение головы

void deleteRecord (ifstream &batchfile, node *&h) 
{ 
ofstream logfile; 
logfile.open("freeplay.log", ios::app); 
node *ptr = h; 
node *previous = nullptr; 
string term; 
batchfile.seekg(1L, ios::cur); 
getline(batchfile, term); 
while (ptr) 
{ 
    if (!strstr(ptr -> name.c_str(), term.c_str())) 
    { 
     previous = ptr; 
    } 
    previous = previous -> next; 
    ptr = ptr -> next; 
} 

}

+0

Предыдущий ptr глава нового списка? Previous имеет значение null, поскольку технически предыдущий ведет себя как ptr. Когда ptr идет дальше, предыдущий также идет дальше, и поэтому он, наконец, будет null, когда ptr будет null. –

+0

Привет! Спасибо за ответ. когда я прокомментирую строку «предыдущий = предыдущий -> следующий», он сохраняет только последний узел, который понятен, потому что драгоценное не меняется. Надеюсь, это имеет смысл. – Priyanka

+0

Это работало? Почему вы использовали предыдущий ptr? –

ответ

0
while (ptr) 
{ 
    if (!strstr(ptr -> name.c_str(), term.c_str())) 
    { 
     if(previous = nullptr){ 
      previous = ptr; 
      head_previous = previous; 
     } else { 
      previous->next = ptr; 
      previous = previous -> next; 
      previous->next = null; 
     } 
    } 

    ptr = ptr -> next; 
} 

Здесь я назначенная previous to ptr всякий раз, если это казнены. В первый раз previous is same as ptr. В следующий раз я связываю previous -> next to ptr. Теперь после цикла вы можете распечатать весь список сохраненных узлов, голова которых составляет previous_head;

+0

Итак, я правильно использовал ваш метод и начал печатать форму head_previous, чтобы весь мой узел был показан. Вот что произошло: третьи данные совпадают с данными ввода. Итак, что он сделал, он сохранил только первые два входа в списке и остановился там. .. Это странно – Priyanka

+0

Можете ли вы показать мне свой ввод и ввод файла? –

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

  • Нет связанных вопросов^_^