2016-01-23 2 views
-3

Я пытаюсь создать связанный список, но всякий раз, когда я пытаюсь назначить данные в поле данных в структуре, я получаю ошибку сегментации..Plz Help ??Ошибка СЕГМЕНТАЦИИ при назначении значения для поля структуры через указатель?

struct Node 
{ 
    int data; 
    Node* next; 
}; 


int main() 
{ 
    ios_base::sync_with_stdio(false); 
    Node* start=NULL; 
    Node* prev=NULL; 
    int N,Q,L,M,R,x; 
    cin>>N>>Q; 
    cin >> x; 
    start->data = x; // The Line where i get error 
    start->next=NULL; 
    prev = start; 
    return 0; 
} 
+2

Вы пытаетесь получить доступ к ячейке памяти с помощью указателя NULL, так как 'Node * start = NULL;' –

+1

Вам нужна [хорошая книга] (http://stackoverflow.com/questions/388242/the-definitive-c -book-гид-и-лист). И вам определенно не нужно 'ios_base :: sync_with_stdio (false);'. – molbdnilo

+0

это не весь код, его просто часть ... ios_base :: sync_with_stdio (false); что требовалось в контексте. В любом случае я попытался объявить этот указатель сразу после объявления структуры, не инициализируя их нулевым значением, –

ответ

0

Вы делаете указатель node типа, но не выделять память для него. И без выделения памяти вы пытаетесь получить доступ к start->data. Для этого вы получаете Ошибка сегментации.

  • Сначала выделите память для начала и пред.
  • Затем доступ к нему.

Например:

Node* start=NULL; 
start= new Node; //allocate memory where your start pointer will point 
start->data = x; 

Edit:

Пожалуйста, проверьте использование new оператора. Я не уверен, какой из них правильный start = new Node; или start = new Node();

Вы также можете выделить память с помощью malloc;

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