2016-01-07 3 views
-5

Я попытался написать код для реализации и распечатать связанный список, используя для цикла. Но мой код дает ошибку времени выполнения. Он рушится, когда я запускаю его.Что не так с моим кодом? Сбой каждый раз, когда я запускаю его

#include <stdio.h> 
#include <stdlib.h> 

struct node 
{ 
    int info; 
    struct node *next; 
    struct node *prev; 
}var; 

int main() 
{ 
    struct node head; 
    head.prev=NULL; 
    struct node *temp; 
    int i; 

    for(i=1;i<5;i++) 
    { 
     struct node *new=malloc(sizeof(var)); 
     temp->info=i; 
     temp->next=new; 
     new->prev=temp; 
     temp=new; 
    } 

    for(i=1;i<=5;i++) 
    { 
     printf("%d ",temp->info); 
    } 

    return 0; 
} 
+6

'temp' никогда не был инициализирован и указывает на нераспределенную память. –

+1

Будьте ангелом и не используйте 'new' как имя переменной. Это больно глаза программиста на C++, и, возможно, однажды ваш код может быть скомпилирован компилятором C++. – Bathsheba

+0

, когда я делаю временную точку на голове, код запускается, но не показывает ожидаемый вывод ouput.it, который, кажется, является местом памяти. – user4983572

ответ

1

Сначала вы должны инициализировать head.next, как вы делаете это с head.prev:

head.info = 0; 
head.prev=NULL; 
head.next=NULL; 

Вы должны initializeyour указатель temp тоже. Указатель должен относиться к голове при запуске:

struct node *temp = &head; 

Адаптировать свой цикл, как это:

for(int i=1;i<5;i++) 
{ 
    temp->next = malloc(sizeof(var)); // allocat new nod right on target 
    temp->next->info=i;    // set data on new node 
    temp->next->prev = temp;   // predecessor of successor is temp 
    temp = temp->next;    // one step forward 
    temp->next = NULL;    // successor of last node is NULL 
} 

Чтобы распечатать список узлов использовать while петли, начните с головой шага вперед до конца:

temp = &head; 
while(temp != NULL) 
{ 
    printf("%d ",temp->info); 
    temp = temp->next; // one step forward 
} 
+0

Большое спасибо. Моя концепция по связанному списку непонятна. Можете ли вы предложить мне несколько хороших ресурсов в связанном списке. Спасибо заранее. – user4983572

+0

@ user4983572 [Одиночные списки в C] (http://www.cprogramming.com/tutorial/c/lesson15.html) – Rabbid76

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