Ten kod zwraca 0 bez pokazania nawet jednego "X" na ekranie.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct List
{
int value;
struct List* next;
};
int main()
{
struct List first;
struct List* current;
int n, flag;
printf("Podaj gorna granice: ");
scanf("%d", &n);
//ustawianie wartosci w liscie (pomijam liczby podzielne przez 2,3,5 i kwadraty)
current = &first;
for(int i = 7; i <= n; i++)
{
if(i % 2 == 0 || i % 3 == 0 || i % 5 == 0)
continue;
flag = 0;
for(int j = 2; j <= sqrt(n); j++)
if(i % (j*j) == 0)
{
flag = 1;
break;
}
if(flag == 1)
continue;
current->value = i;
current->next = malloc(sizeof(struct List));
current = current->next;
}
printf("X");
free(current);
printf("X");
current = &first;
while(current != 0)
{
printf("%d ", current->value);
current = current->next;
}
return 0;
}
Jeżeli usunę linijkę "free(current);", to jest wszystko okej. Czemu printf przed free nie działa? Czemu nie mogę usunąć ostatniego elementu z listy?