Просто так вы все знаете, что это проблема домашних заданий, и я потратил часы, пытаясь понять эту мелочь. Мой pop()
не будет работать. Это мой текущий код pop()
:Stack.Pop() используя LinkedList
StackElement Stack::Pop(){
Position temp;
temp = stack.CurrentEntry();
stack.Delete();
return temp;}
Я использую Delete()
, который связанный список, основанный delete()
функция, которая идет как это:
void LinkedList::Delete(){
if (current == first && AtEnd()){
// Remove the memory allocation for the element's data
delete ¤t->data;
// Reset all values of the linked list to original (null) state
current = NULL;
pred = NULL;
first = NULL;
}
else
// Checks if the current element is the first node in the lists
if (current == first){
// Make new first element to be the next element
first = current->next;
// Remove the memory allocation for the element's data
delete ¤t->data;
// The new current entry is the successor of the deleted node.
current = first;
}
// When the element you're deleting is not the first node in list
else{
assert(!Empty());
// Temporary node to prevent current from being marroned
Node *tempNode = current->next;
pred->next = tempNode;
// Remove the memory allocation for the element's data
delete ¤t->data;
current = tempNode;
}
}
Когда я компилирую, он бросает мне эту ошибку здесь :
Необработанное исключение в 0x003E5F79 в Program5_test.exe: 0xC0000005: место записи нарушения доступа 0xF495EE12.
Любая помощь будет принята с благодарностью.
'удаление & текущий-> данные' - одна проблема. Это должно быть либо 'delete current-> data', либо' delete current'. Скорее всего, 'delete current'. –
Мы не знаем типы, но 'delete & current-> data;' выглядит неправильно (почему амперсанд?) – John3136