Я написал этот код для двойного списка, но в соответствии с инструментом отладки есть некоторые ошибки сегментации. Компиляция отлично, но взрывается при запуске.Инициализация двойного списка
заголовочный файл
#ifndef LIST_H_INCLUDED
#define LIST_H_INCLUDED
struct Node
{
int data;
Node* next; //next node
Node* prev; //prev node
};
typedef struct
{
Node* first; //aims to first node
Node* last; //aims to last node
} List;
void initList(List &l);
Связанный список каст
#include <cstddef>
#include "List.h"
void initList(List &l)
{
l.first->data = -1;
l.first = NULL;
l.first->prev = NULL;
l.last->data = -2;
l.last->next = NULL;
l.last->prev = NULL;
}
основные
#include <iostream>
#include <stdio.h>
#include "List.h"
using namespace std;
int main()
{
List nlist;
initList(nlist);
return 0;
}
* Компиляция отлично, но взрывается при запуске * - «Компиляция штрафа» на самом деле ничего не значит. Все это означает, что ваш синтаксис C++ является законным - он не имеет никакого отношения к тому, есть ли у вас логические или другие ошибки времени выполнения. Также 'typedef struct' -' C'. Какая книга (ы) учит вас старому C-образному кодированию? – PaulMcKenzie
Вам не хватает следующих ключевых понятий, которые вам необходимо полностью понять, прежде чем вы сможете реализовать свой связанный список: 1. Конструкция и инициализация классов; 2. Автоматический и динамический охват. Вы, очевидно, не узнали, что ваши члены списка должны быть созданы. Вам нужно вернуться и перечитать соответствующие главы в своей книге на C++. С показанным кодом слишком много проблем. –
Это также очевидный случай связанного списка, который не связан. OP NULLing указатели не означают, что они инициализируются каким-либо разумным в контексте связанного списка. Рекомендация, которую OP читает по этой теме, сохраняется. Очевидно, что они еще не поняли. – user4581301