Ich habe Probleme beim Sortieren eines Stapels in absteigender Reihenfolge, die Sortierung funktioniert mit Hilfe eines anderen Stapels.Sortieren eines Stapels in absteigender Reihenfolge
hier ist der Sortiercode:
void* sort(stack_type* stack, stack_type* auxiliary) {
int* element = NULL;
while(!is_empty(stack)) {
element = pop(stack);
while(!is_empty(auxiliary) && head(auxiliary) > element) {
push(pop(auxiliary), stack);
}
push(element, auxiliary);
}
}
der Ausgang ist somit:
| -4 |
| -45 |
| 356 |
| 87 |
| 76 |
| 54 |
| 34 |
| 22 |
| 8 |
| 2 |
aber ich mag so:
| 356 |
| 87 |
| 76 |
| 54 |
| 34 |
| 22 |
| 8 |
| 2 |
| -4 |
| -45 |
hier ist der Kern mit vollständigem Code: https://gist.github.com/avoxy/380e96a87cb3c6cc1f4a62c02fb6428d
thx jungs
Was ein bisschen Ärger *? –
Implementieren Sie Ihren eigenen Stack? Anstatt eine einfach verkettete Liste zu verwenden (was die gebräuchlichste Art ist, einen Stapel zu implementieren), verwenden Sie eine doppelt verkettete Liste und behalten Sie einen Zeiger auf den Kopf und den Schwanz. Dann können Sie beliebig über den "Stack" iterieren. Ich würde es aber nicht mehr als "richtigen" Stapel bezeichnen. –
Welche Art von Sortieralgorithmus soll das sein? –