Witam.
Mam zapewne banalny problem, jednak sam siedzę nad tym już kilka godzin i nie mam pojęcia gdzie jest błąd.
Otóż, uzupełniając listę jednokierunkową, a później ją wypisując na ekranie jako pierwszy element wypisywany jest adres komórki a nie jej zawartość.
Podejrzewam, że problem jest gdzieś przy przypisywaniu pierwszego elementu, jednak na różne sposoby próbowałem modyfikować kod, lecz on wciąż nie działa.
Ten prostu program ma pobierać liczby od użytkownika aż do momentu podania liczby 0 i wpisywać ją na listę jednokierunkową, a następnie ma za zadanie wypisać tą listę.
#include <stdio.h>
#include <stdlib.h>
struct element {
int liczba;
struct element* next;
};
typedef struct element ELEMENT;
typedef ELEMENT* ADRES;
void utworzliste(ADRES lista)
{
int i, licz;
for (i = 0;; i++) {
ADRES tmp = (ADRES)malloc(sizeof(ELEMENT));
printf("Podaj %d liczbe calkowita: ", i + 1);
scanf("%d", &licz);
if (licz == 0)
break;
tmp->liczba = licz;
tmp->next = NULL;
if (lista == NULL)
lista = tmp;
else {
lista->next = tmp;
lista = lista->next;
}
}
}
void wyswietl(ADRES lista)
{
int i;
for (i = 0;; i++) {
printf("%d . liczba wynosi %d \n", i + 1, lista->liczba);
if (lista->next == NULL)
break;
lista = lista->next;
}
}
int main()
{
ADRES lista1 = (ADRES)malloc(sizeof(ELEMENT));
utworzliste(lista1);
wyswietl(lista1);
return 0;
}