Mit dem obigen beispiel käme etwa sowas raus:
intKette kette3;//ohne starteintrag, da noch unbekannt
int z;//da kommen die eingaben jeweils hin
do {
printf("element eingeben (->Eingabe):");
scanf("%d", &z);//von standardeingabe
kette3.Append(z);//wert speichern
getchar();//zeilenende aus standardeingabe löschen
printf("weiter element? (->JA/NEIN):");//hier wird es hässlich, denn
//immer JA oder NEIN tippen zu müssen ist "böse", etwas einfacheres
//ist netter, z.b. keine eingabe für ja und alles andere für nein
z=getchar();
} while(z==10);//wenn bei JA/NEIN frage nichts eingegeben wird, geht es weiter
//hier ist die erste variable voll, das gleiche nochmal für die
// zweite und danach der rest (schnittmenge, vergleich und anderer funktionen)
//es muss in "class intKette" übrigens auch noch heissen:
intKette(){glieder=NULL;}
intKette(int z){glieder=NULL;Append(z);}
~intKette(){if(glieder) delete glieder;glieder=NULL;}
void Append(int z){//element einfügen, sehr simpel; sortiertes einfügen wäre evtl. besser, fehlerbehandlung empfohlen
intKettenglied *neu=new intKettenglied;
neu->num=z;
neu->next=glieder;
glieder=neu;
}
//eine mögliche sort routine
typedef int (__cdecl *COMPARE )(const void *elem1, const void *elem2);
int gliedcomp(const intKettenglied **arg1, const intKettenglied **arg2){
if((*arg1)->num>(*arg2)->num)
return 1;
if((*arg1)->num<(*arg2)->num)
return -1;
return 0;
}
void intKette::Sort(){
int n, i;
intKettenglied *act_gl=glieder;
intKettenglied **sortarray;
n=0;
while(act_gl){
n++;//ist anzahl elemente
act_gl=act_gl->next;
}
if(n<2)//0 oder 1 elemente sind automatisch richtig sortiert
return;
//alle zeiger in ein array
sortarray=new intKettenglied*[n];
act_gl=glieder;
i=0;
while(act_gl){
sortarray[i++]=act_gl;
act_gl=act_gl->next;
}
//sortieren
qsort(sortarray, n, sizeof(intKettenglied*), (COMPARE)gliedcomp);
//und neu aufbauen
glieder=sortarray[0];
for(i=0;i<n-1;i++){
sortarray[i]->next=sortarray[i+1];
}
sortarray[i]->next=NULL;//kette stoppen
delete[] sortarray;//array freigeben
}
Und das ganze, wie immer ohne viel fehlerbehandlung, da nur das prinzip gezeigt werden soll.
mr.escape