Witam
Mam pytanie odnośnie pewnego kodu w C
Lista * ListaWstaw(Lista* head, int a);
int main()
{
Lista *tmp;
Lista *head;
Lista *element=malloc(sizeof(Lista));
element->a=1;
element->next=NULL;
head=element;
head = ListaWstaw(head,2);
head = ListaWstaw(head,3);
head = ListaWstaw(head,4);
head = ListaWstaw(head,5);
head = ListaWstaw(head,6);
for(tmp=head;tmp!=NULL;tmp=tmp->next)
printf("%d ",tmp->a);
getch();
return 0;
}
Lista * ListaWstaw(Lista *head, int a)
{
Lista *temp=(Lista*)malloc(sizeof(Lista));
if(temp==NULL)
{
printf("Nie mozna przydzielic pamieci\n");
return 1;
}
temp->a=a;
temp->next=head;
head=temp;
return head;
}
ten kod jest w porządku w funkcji main mogę wylistować elementy listy
wcześniej próbowałem robić to tak:
int ListaWstaw(Lista* head, int a);
int main()
{
Lista *tmp;
Lista *head;
Lista *element=malloc(sizeof(Lista));
element->a=1;
element->next=NULL;
head=element;
ListaWstaw(head,2);
ListaWstaw(head,3);
ListaWstaw(head,4);
ListaWstaw(head,5);
ListaWstaw(head,6);
for(tmp=head;tmp!=NULL;tmp=tmp->next)
printf("%d ",tmp->a);
getch();
return 0;
}
int ListaWstaw(Lista *head, int a)
{
Lista *temp=(Lista*)malloc(sizeof(Lista));
if(temp==NULL)
{
printf("Nie mozna przydzielic pamieci\n");
return 1;
}
temp->a=a;
temp->next=head;
head=temp;
return 0;
}
w tej wersji nie mogłem wylistować wartości elementów listy. Wskaźnik head po wyjściu z funkcji ListaWstaw zawsze wskazywał na pierwszy element.
Myślałem, że w przypadku przekazywania wskaźnika do funkcji ListaWstaw head zawsze będzie wskazywał na kolejno wstawiany element. Dlaczego do funkcji ListaWstaw muszę przekazywać wksaźnik head, dlaczego muszę zwracać wskaźnik head z funkcji ListaWstaw i przypisywać go do head w funkcji main()