/* Einhängen mit Platzsuche */ /* Datei: sortel.c */ #include "sortlist.h" void SortEin (SortKopf *sp, Elever * elem) { int x; Elever * ehp, *ehpold; if (sp-> erster == NULL) { sp->erster = elem; sp->letzter = elem; elem->ep = NULL; return; } ehp = sp->erster;/*Hier: mindestens ein Objekt*/ ehpold = NULL; do /* Suche Referenzobjekt */ { x = (*sp->vfunktionp) (ehp,elem); if (x > 0) break; /* Referenz gefunden */ else { ehpold = ehp; ehp = ehp->ep; } } while (ehp != NULL); if (x < 0) /* hinten anhängen */ { elem->ep = NULL; ehpold->ep = sp-> letzter = elem; } else /* davor einhängen */ { if (ehpold == NULL) /*vor erstem Element*/ { elem->ep = sp->erster; sp->erster = elem; } else { elem->ep = ehpold->ep; ehpold->ep = elem; } } }