2016-11-06 4 views
0

Я хочу создать связанный список, используя C. Почему этот фрагмент кода не работает? Код приведен ниже. Я использую CodeBlocks для запуска этого, который является компилятором с открытым исходным кодом.Создание единственного связного списка в C

#include<stdio.h> 
#include<malloc.h> 

struct node 
{ 
    int info; 
    struct node *next; 
}*first=NULL; 

void create() 
{ 
    struct node *ptr; 
    int i,n; 
    printf("Enter the number of nodes"); 
    scanf("%d", &n); 
    for(i=0;i<n;i++) 
    { 
    ptr=(struct node *)malloc(sizeof(struct node)); 
    printf("Enter the data."); 
    scanf("%d",&ptr->info); 
    ptr=ptr->next; 
    if(first==NULL) 
    {first=ptr;} 
    } 
    ptr->next=NULL; 
} 
void main() 
{ 
    create(); 

} 
+0

Возможно, вы должны добавить ошибку. «Не работает» недостаточно для SO. – Nipo

ответ

0

Когда вы ptr=ptr->next; в цикле, вы теряете ptr, а затем вы указываете на мусор, потому что next еще не инициализирован. Итак, сначала ссылку ptr в список, а затем перейдите на страницу next.

Выполнение этого я оставляю для вас как упражнение.

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