Lista jednokierunkowa

0

Z nudów zacząłem się uczyć list i mam taki problem gdyż jako pierwszy element listy wpisałem 3, a potem funkcją dodawania nowego elementu dodaję 4 , po czym chcę wypisać zawartość listy jednak wypisuje się tylko 3. Wydaje mi się , że zaimplementowałem poprawnie wszystko, szukałem błędu ale niestety nie mogę nic znaleźć :/

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

struct element
{
	int val;
	struct element *next;
};

struct element *first = NULL;

void dodaj(struct element *, int);
void wypisz(struct element *);

int main()
{
	first = malloc(sizeof(struct element));
	first->val = 3;
	first->next = NULL;
	dodaj(first, 4);
	wypisz(first);
	getchar(0);
}

void dodaj(struct element *lista, int liczba)
{
	struct element *nowy;
	while( lista->next != NULL)
	{
		lista = lista->next;
	}
nowy = malloc (sizeof(struct element));
nowy->val = liczba;
nowy->next = NULL;
lista->next = nowy;
}

void wypisz(struct element *lista)
{
	if(lista != NULL)
		{
			printf("%d\t", lista->val);
			lista = lista->next;
		}
}
0

Odróżniasz if od while?

0

O kurcze taka gafa, dzięki za zwrócenie uwagi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1