Mam problem.
Wczytuje wiersze z pliku do listy dynamicznej dwukierunkowej. Muszę to zrobić tak aby wiersz od razu był wstawiony w prawidłowe miejsce (czyt. posortowane wg indeksu).
mój kod:
Kod:
while(!feof(f))
{
wsk = (struct para*)malloc(sizeof(struct para));
wsk->nast = NULL;
wsk->poprz = NULL;
fscanf(f,"%d %s %f",&wsk->nr_indeksu,&wsk->nazwisko,&wsk->ocena);
if (poczatek == NULL)
poczatek = wsk;
else
{
pom = poczatek;
while(pom->nr_indeksu < wsk->nr_indeksu && pom->nast !=NULL)
pom = pom->nast;
if(pom->nast==NULL)
{
wsk->poprz = pom;
pom->nast = wsk;
}
else
{
pom->poprz->nast=wsk;
wsk->nast = pom;
wsk->poprz = pom->poprz;
pom->poprz = wsk;
}
}
}
napisałem to w tramwaju, myslalem ze działa jednak kompiluje i nie działa. Co jest nie tak?
Jade w/g takiego algorytmu:
1. Wczytaj dane
2. Jeżeli początek jest NULL to przypisz wczytana wartość, jeżeli nie:
3. Przesuwaj wskaźnik od początku aż spotkasz wartość indeksu większą od wczytanego indeksu lub trafiasz na koniec listy.
4. Jeśli trafisz na koniec listy to dodaj wczytany wiersz jako ostatni, jeżeli nie
5. To dodaj wczytany wiersz przed wybranym