Я пишу программу, которая реализует стеки как связанные списки. Программа соответствует, но когда я запускаю ее, она падает. Я запустил отладчик и сказал необработанное исключение, когда оно попадает внутрь функции Pop() и в строку «topPtr = topPtr-> next». Мне было интересно, заметил ли кто-нибудь что-то там, которое вызывает эту ошибку. Я прикрепил часть основной и поп-функции, которые, как я полагаю, пострадали. спасибоC++ Pop Функция Связанный список
template<class ItemType>
struct NodeType
{
ItemType info;
NodeType* next;
};
template<class ItemType>
class Stack
{
private:
int stacklength;
NodeType<ItemType>* topPtr; // It points to a singly-linked list
public:
void Pop(ItemType &x);
template<class ItemType>
void Stack<ItemType>::Pop(ItemType &x)
{
NodeType<ItemType>* tempPtr;
tempPtr = topPtr;
topPtr = topPtr->next;
delete tempPtr;
stacklength--;
}
int main()
{
Stack <int> IntStack;
int x;
IntStack.Pop(x);
}
Это произойдет, если 'topPtr' является' nullptr' или неинициализирован. Итак, 1: вам нужно убедиться, что вы инициализируете 'topPtr = nullptr;' в конструкторе и 2: вам нужно проверить глубину стека на 'Pop' (нельзя вытащить из пустого стека!). – crashmstr
'topPtr' не инициализируется! – simpel01
Что вы ожидаете от 'topPtr'? – immibis