Co jest nie tak w tym kodzie? Wyświetlany jest tylko pierwszy element. Wydaje mi się, że w momencie uzupełniania elementu innego niż pierwszy (gdy pierwszy jest już zajęty) trzeba zastosować coś w stylu przypisania: "pierwszy = ostatni", żeby lista się nie rozleciała. Tylko do końca nie wiem, w którym miejscu to dodać + może jeszcze jakieś modyfikacje potrzebne?
#include <stdio.h>
#include <stdlib.h>
struct element {
int dane;
struct element *nast;
};
typedef struct element ELEMENT;
typedef ELEMENT *ADRES;
void Wypisz (ADRES pierwszy)
{
ADRES pom = (ADRES)malloc(sizeof(ELEMENT));
pom = pierwszy;
while(pom != NULL)
{
printf("%d", pom->dane);
pom = pom->nast;
}
}
int main()
{
ADRES pierwszy = NULL, ostatni = NULL, pom;
int liczba;
FILE *f = fopen("Plik.txt", "rt");
if(f == NULL)
{
printf("Error\n");
return 1;
}
while(fscanf(f, "%d", &liczba) == 1)
{
pom = (ADRES)malloc(sizeof(ELEMENT));
pom->dane = liczba;
pom->nast = NULL;
if(pierwszy == NULL)
{
pierwszy = pom;
ostatni = pom;
}
else
{
pierwszy = ostatni;
ostatni->nast = pom;
ostatni = pom;
}
}
fclose(f);
Wypisz(pom);
return 0;
}