#define ROZT 30
#define ROZT_2 15
typedef struct osoba
{
char nazwisko[ROZT];
char imie[ROZT_2];
int rok;
int miesiac;
int dzien;
int telefon;
struct osoba *nxt, *prev;
} psymbol;
typedef psymbol *ppsymbol;
ppsymbol sym_end = NULL;
ppsymbol sym_beg = NULL;
void UstawWKolejnosci(ppsymbol tmp)
{
//ppsymbol wsk, wsk1;
if (tmp->prev==NULL)
return;
else
{
ppsymbol wsk, wsk1, wsk2;
wsk=tmp->prev;
wsk1=tmp;
if((strcmp (tmp->nazwisko, wsk->nazwisko)>0))
return;
while ((strcmp (tmp->nazwisko, wsk->nazwisko))<=0)
{
wsk=wsk->prev;
if(wsk==NULL)
break;
}
if (wsk==NULL)
{
wsk2=tmp->prev;
wsk2->nxt=NULL;
sym_end=wsk2;
wsk=wsk->nxt;
wsk->prev=tmp;
tmp->nxt=wsk;
tmp->prev=NULL;
sym_beg=tmp;
return;
}
wsk=wsk->nxt;
wsk1=wsk->nxt;
while ((strcmp (tmp->nazwisko, wsk->nazwisko)==0))
wsk1=wsk1->nxt;
while ((strcmp (tmp->imie, wsk->imie))>0)
wsk=wsk->nxt;
if(wsk==wsk1)
{
wsk=wsk->prev;
wsk=wsk->prev;
wsk->nxt=tmp;
tmp->prev=wsk;
wsk1->prev=tmp;
tmp->nxt=wsk1;
}
else
{
wsk=wsk1;
wsk=wsk->prev;
wsk=wsk->prev;
wsk->nxt=tmp;
tmp->prev=wsk;
wsk1->prev=tmp;
tmp->nxt=wsk1;
}
wsk2=tmp->prev;
wsk2->nxt=NULL;
sym_end=wsk2;
}
}
Witam,
mam problem z ową funkcją której zadaniem ma być przeniesienie elementu z końca listy w odpowiednie dla niej miejsce (gdyż lista ma być sortowana wg nazwisk i imion)
brak jakichkolwiek błędów, jej mała modyfikacja (rozpatrywana dla przypadku gdy lista jest 1 lub 2 elementowa działa, ale rozbudowana wersja zawiera jakiś błąd, którego nie jestem w stanie pojąc, gdyż rozpisywałem sobie to działanie i teoretycznie wydaje mi się, iż powinna być w porządku.
Pozdrawiam
poprawienie tytułu wątku + dodanie znaczników <code class="c"> - fp