Quicksort mit Listen

Hi, ich bekomme das nicht hin. Kann jemand helfen?

Der Punkt ist einfach nur, unabhÀngig von der Sinnhaftigkeit der Eingabe mittels Push, wie man Quicksort mit Listen implementiert. Mit einem Array ist es kein Problem, jedoch mit Listen ^^.

Mit VM 2013 programmiert:

#include <stdlib.h>
include

// Class list typedef struct quicks { int item; struct quicks *next; } list;

void list_push(list **this, int item) { list top = (list)malloc(sizeof(list)); if (!top) { printf("list_push: out of memory\n"); return; } top->item = item; top->next = this; this = top; }

int list_pop(list **this) { list top = this; if (!this) { printf("list_pop: empty list\n"); abort(); } int item = top->item; this = top->next; free(top); return item; }

int list_isempty(list **this) { return *this == NULL; }

list partition(list *this, list *left, list *right) { list *pivot = *this;

if (!*this)
    abort();

*this = (*this)->next;

while (*this != NULL) {
    if ((*this)->item <= pivot->item) {
        list_push(*left, list_pop(&this));
        *left = (*left)->next;
    }
    else /*if: this_t->item > pivot->item*/ {
        list_push(*right, list_pop(&this));
        *right = (*right)->next;
    }
}

//concat
while ((*left)->next != NULL)
    *left = (*left)->next;
(*left)->next = pivot;
/*left--->pivot--->right*/
pivot->next = (*right);
return *left;

}

void quicksort(list *this, list *left, list **right) {

if ((*this) == NULL) return;
else {
    list *p = partition(&this, &left, &right);
    quicksort(this, left, right);
    quicksort(this = (*left)->next, left, right);
}

}

int main() { list *s = NULL; list *left = s; list *right = NULL; int i;

for (i = 1; i <= 10; i++)
    list_push(&s, i);
quicksort(&s, &left, &right);
for (i = 1; i <= 10; i++) {
    printf("%d ", list_pop(&s));
}

system("PAUSE");
return 0;

}

...zum Beitrag

https://www.dropbox.com/s/340lqgvxvqxp0gc/QuicksortListen.c?dl=0

...zur Antwort

WOOOOOW ... Gerade tut sich was, Auftragsnummer existiert jetzt! Wurde im Zentral HUB sortiert, 90km weg von mir...

...zur Antwort

Hi,

Paket heute nicht bekommen und am Status hat sich bis jetzt nichts geĂ€ndert. Verdammt sind die langsam, dafĂŒr dass das Paket ĂŒber 10 Euro im Versand war.

Absolut unbrauchbar: Das telefonische Kundencenter... Sehen genau so viel vom Status wie der Kunde. Keine Zusatzinfos, wie z.B. welcher Faher usw.

So viel dazu. Nie wieder Hermes!

...zur Antwort