2015-02-03 3 views
0

Я пытаюсь реализовать односвязный список. Это верно? Получение этого предупреждения «преобразование не переносимого указателя». Как проверить, работает ли SLL? Связано ли это друг с другом? Кстати, я использую Turbo C. Я все еще в этом создании и вставке части узлов.Отдельно связанный список в C (Предупреждение)

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

struct node 
{ 
    int data; 
    struct node *next; 
}*start=NULL; 




void creat(int *num) 
{ 
     struct node *new_node,*current; 

     new_node=(struct node *)malloc(sizeof(struct node)); 


     new_node->data=num; 
     new_node->next=NULL; 

     if(start==NULL) 
     { 
     start=new_node; 
     current=new_node; 
     } 
     else 
     { 
     current->next=new_node; 
     current=new_node; 
     } 
} 

main() 
{ 

    int binrange,max=100,n,i,divi; 
    clrscr(); 
    printf("enter range: "); 
    scanf("%d",&binrange); 
    n=max/binrange; 
    divi=max/n; 

    for(i=0;i<=max;i++) 
    { 
     if(i%divi==0 && i>0) 
     { 
      //create nodes here 
      //store i into nodes 
      creat(&i); 

     } 

    } 

    getch(); 
} 
+0

'* start = NULL;' выглядит странно – ForceBru

+0

* Где * вы получаете предупреждение? –

+0

это неправильно? start должен быть нулевым, поскольку еще нет соединительного узла. – imagineracoon

ответ

2
new_node->data=num; 

должен быть

new_node->data=*num; 

num является указателем и *num дает значение, которое будет храниться в new_node->data

Назначение указатель на переменную типа int дает действительный предупреждение.

+0

спасибо. как проверить, работает ли SLL? – imagineracoon

+0

@imagineracoon О, это другое дело. Сохраните главу списка неповрежденным и распечатайте свой список от головы до конца списка. (Получили ли вы то, что я только что сказал?) – Gopi

+0

не очень. Неиспользованный? – imagineracoon

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