Czy dobrze zastosowałam listy w c?


(Karmelka18) #1

Czy dobrze robie program? prosze przejrzyjcie to...Program ma umożliwiać porównanie co najmniej 3 różnych algorytmów sortujących

zaimplementowanych na listach jednokierunkowych w tym algorytm QuickSort. Zamiana elementów

musi być realizowana przez zamianę wskaźników. Porównywane wartości to ilość zamian i ilość

porównań wykonywana przez każdy z algorytmów. Dane do sortowania powinny być wczytywane z

pliku, a posortowane zapisywane do pliku. Nazwy plików podaje użytkownik, w czasie działania

programu lub jako jego parametry.

na listach

musi być koniecznie quick sort!

// SORTOWANIE PRZEZ WYBÓR

void przez_wybor(void) {

ELEMENT *a = NULL;

ELEMENT *b = NULL;

ELEMENT *c = NULL;

ELEMENT *d = NULL;

ELEMENT *tmp = NULL;

a = c = glowny;

while (a->nast != NULL) {

d = b = a->nast;

while (b != NULL) {

if (a->liczba > b->liczba) {

/* neighboring linked list node */

if (a->nast == b) {

if (a == glowny) {

a->nast = b->nast;

b->nast = a;

tmp = a;

a = b;

b = tmp;

glowny = a;

c = a;

d = b;

b = b->nast;

}

else {

a->nast = b->nast;

b->nast = a;

c->nast = b;

tmp = a;

a = b;

b = tmp;

d = b;

b = b->nast;

}

}

else {

if (a == glowny) {

tmp = b->nast;

b->nast = a->nast;

a->nast = tmp;

d->nast = a;

tmp = a;

a = b;

b = tmp;

d = b;

b = b->nast;

glowny = a;

}

else {

tmp = b->nast;

b->nast = a->nast;

a->nast = tmp;

c->nast = b;

d->nast = a;

tmp = a;

a = b;

b = tmp;

d = b;

b = b->nast;

}

}

}

else {

d = b;

b = b->nast;

}

}

c = a;

a = a->nast;

}

}

// SORTOWANIE BĄBELKOWE

void babelkowe(void) {

ELEMENT *a = NULL;

ELEMENT *b = NULL;

ELEMENT *c = NULL;

ELEMENT *e = NULL;

ELEMENT *tmp = NULL;

while(e != glowny->nast) {

c = a = glowny;

b = a->nast;

while(a != e) {

if(a->liczba > b->liczba) {

if(a == glowny) {

tmp = b -> nast;

b->nast = a;

a->nast = tmp;

glowny = b;

c = b;

} else {

tmp = b->nast;

b->nast = a;

a->nast = tmp;

c->nast = b;

c = b;

}

} else {

c = a;

a = a->nast;

}

b = a->nast;

if(b == e)

e = a;

}

}

}