Witam mam napisany kod jednak nie rozumiem do końca jego działania
struct lista
{
int data;
struct lista *next;
};
struct lista *create(int data)
{
struct lista *new = malloc(sizeof(struct lista));
if(new != NULL)
{
new -> data = data;
new -> next = NULL;
}
return new;
};
void push_back(struct lista *list, int data)
{
struct lista *new = malloc(sizeof(struct lista));
struct lista *tmp = list;
if(new != NULL)
{
while(tmp -> next != NULL)
{
tmp = tmp -> next;
}
new -> data = data;
new -> next = NULL;
tmp -> next = new;
}
};
void print(struct lista *lista)
{
while(lista != NULL)
{
printf("%d ",lista->data);
lista = lista -> next;
}
}
int main()
{
struct lista *list = NULL;
list = create(1);
push_back(list,4);
push_back(list,2);
push_back(list,8);
print(list);
}
Cały kod działa poprawnie. Do listy elementy są dodawane na koniec. Jednak nie rozumiem jakim cudem push_back edytuje listę jeżeli działamy na nowej strukturze tmp. Wcześniej miałem zapis list = tmp jednak jak się okazało jest niepotrzebne.