Мне нужно создать структуру данных скиплиста, двумерную матрицу двусвязных списков. Мой профессор хочет, чтобы у нас в каждой строке была INT_MIN, а в хвосте каждой строки - INT_MAX, на которую указывают двойные указатели с именами frontGuards и tailGuards. Я получаю сообщение об ошибке с моим текущим кодом Exception 0xc0000005 encountered at address 0xf71c3d: Access violation writing location 0xcccccccc
, которое, как я предполагаю, означает, что что-то не так с тем, как у меня установлены указатели, но я не могу понять, почему. Моя программа не может пройти мимо конструктора, и до сих пор я пытался отладить, чтобы посмотреть на это, и он говорит, что this = {SkipList * const |0x005efddc} 0x005efddc, что также выглядит как проблема. вот мой конструктор в .cpp файле и мой .h файл
конструктор:
SkipList::SkipList() // default constructor that sets front and rear guards
{
frontGuards[0]->data = INT_MIN;
rearGuards[0]-> data = INT_MAX;
frontGuards[0]->next = rearGuards[0];
rearGuards[0]->previous = frontGuards[0];
frontGuards[0]->previous = nullptr;
rearGuards[0]->next = nullptr;
}
.h файл:
class SkipList
{
private:
class SNode
{
public:
// SNode stores int as data
explicit SNode(int data);
// data for SNode
int data;
// link to next SNode
SNode *next;
// link to prev SNode
SNode *previous;
// link to up one level
SNode *upLevel;
// link to down one level
SNode *downLevel;
};
SNode **frontGuards;
SNode **rearGuards;
public:
void addBefore(SNode *newNode, SNode *nextNode);
SkipList();
virtual ~SkipList();
bool Add(int data);
friend ostream &operator<<(ostream &os, const SkipList &list);
};
В настоящее время я только пытаюсьПолучите все функции класса, работающие с одним двусвязным списком, прежде чем перейти к матрице. Извините, если это что-то простое, чтобы понять, что я все еще очень наивен, но я не могу получить помощь от репетитора моей школы из-за моей работы и отсутствия школы из-за праздников. Я никогда не использовал двойные указатели, и я не понимаю, почему мне нужно использовать их или переднюю / заднюю охрану для скиплиста или что происходит с моим кодом. Я прошу прощения за все, что кажется обыденным или излишним. Что это значит, что указатель не инициализирован? Особенно, если я пытаюсь, чтобы он указывал на данные с помощью frontGuards [0] -> data = INT_MIN
UPDATE: я попытался инициализировать указатели на nullptr в заголовочном файле, но это не помогло, но все равно выдаетта же ошибка