2016-03-08 6 views
-2
/******************************************** 
* Remove the last employee from the list * 
********************************************/ 
void EmployeeList::Remove() 
{ 
    newEmployee * nextToEnd = head, 
       * last = head->Next(); 

    //THIS IS THE PROBLEM 
    //no nodes 
    if(head == NULL) 
     return; 

    //remove the only employee in the list 
    if(head->Next()== NULL) 
    { 
     cout << "\n\t\tEmployee ID " << head->empID() << " and salary $" 
      << head->ySalary() << " have been removed.\n"; 
     head = NULL; 
     delete head; 
    } 

    else 
    { 
     // remove the last employee of the list 
     while(last->Next() != NULL) 
     { 
      nextToEnd = last; 
      last = last->Next(); 
     } 

     cout << "\n\t\tEmployee ID " << last->empID() << " and salary $" 
      << last->ySalary() << " have been removed.\n"; 

     delete last; 
     nextToEnd->SetNext(NULL);  
    } 
} 

проблема возникает при попытке удалить из пустого списка. Я знаю, что я не могу удалить, если он пуст, но я бы вместо того, чтобы разбивать программу для отображения «Список сотрудников пуст.Функция удаления приводит к сбою программы C++

я указал, где я думаю, что проблема в надежде кого-то может помочь мне, чтобы понять это.

+0

Что вы ожидаете от 'head-> Next()', если 'head' NULL? – immibis

ответ

2

Все, что вам нужно сделать, это то, что уже было показано в коде. Обратите внимание на то, как он выводит текст на консоль с помощью cout. Измените if заявление, в котором вы указали на «проблему» должен вывести сообщение, а затем вернуться.

Но ошибка вашей программы не имеет никакого отношения к тому, что вы отметили. Это сбой из-за head->Next(). Вы не можете вызвать метод на объекте, который равен NULL. Это должно происходить послеif (head == NULL) проверка.

+0

// ЭТО ПРОБЛЕМА // нет узлов if (head == NULL) { cout << "\ t \ t Список сотрудников пуст. \ N"; возвращение; } –

+0

Я НЕ МОЖЕТ ПОНИМАТЬ ВТОРОЕ ОБЪЯСНЕНИЕ. ВЫ МОЖЕТЕ Я НЕ МОЖЕТ ИСПОЛЬЗОВАТЬ IF (HEAD-> NEXT() == NULL)? ЧТО УСЛОВИЕ ДОЛЖНО ИСПОЛЬЗОВАТЬСЯ ТОГДА? –

+0

@DestinyAlyshaCampos Прежде всего, поворотный колпачок замка. Что касается второй части моего объяснения, вы сказали, что ваша программа рушится, и я объяснял почему. Это проблема для вас: 'last = head-> Next();' и я уже объяснил, почему. –

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