#include <stdio.h>
#include <stdlib.h>
struct Liczba{
int wartosc;
struct Liczba *nastepny;
struct Liczba *poprzedni;
struct Liczba *ostatni;
};
void dodaj(struct Liczba **glowa, int wartosc){
struct Liczba
*element
= (struct Liczba
*)malloc(sizeof(struct Liczba
)); element->wartosc = wartosc;
element->nastepny = element->poprzedni = element->ostatni = NULL;
if((*glowa) == NULL){
(*glowa) = element;
(*glowa)->nastepny = (*glowa);
(*glowa)->poprzedni = (*glowa);
(*glowa)->ostatni = (*glowa);
}
else{
(*glowa)->ostatni->nastepny = element;
element->poprzedni = (*glowa)->ostatni;
element->nastepny = (*glowa);
(*glowa)->poprzedni = element;
(*glowa)->ostatni = element;
}
}
void wypisz(struct Liczba *glowa){
struct Liczba *temp = glowa;
while(temp != glowa->ostatni){
temp = temp->nastepny;
}
}
void sortuj(struct Liczba *glowa){
struct Liczba *iter_1 = NULL;
struct Liczba *iter_2 = NULL;
int temp = 0;
for(iter_1 = glowa; iter_1 != glowa->ostatni; iter_1 = iter_1->nastepny){
for(iter_2 = glowa; iter_2 != glowa->ostatni; iter_2 = iter_2->nastepny){
if(iter_1->wartosc > iter_2->wartosc){
temp = iter_1->wartosc;
iter_1->wartosc = iter_2->wartosc;
iter_2->wartosc = temp;
}
}
}
}
void zniszcz(struct Liczba **glowa){
struct Liczba *temp = (*glowa);
struct Liczba *doZniszczenia = NULL;
while(temp != (*glowa)->ostatni){
doZniszczenia = temp;
temp = temp->nastepny;
doZniszczenia = NULL;
}
}
int main(void)
{
struct Liczba *tab = NULL;
dodaj(&tab, 10);
dodaj(&tab, 2);
dodaj(&tab, -3);
dodaj(&tab, 41);
dodaj(&tab, 98);
dodaj(&tab, 3);
dodaj(&tab, -11);
printf("\nPrzed sortowaniem:\n"); wypisz(tab);
sortuj(tab);
printf("\nPo posortowaniu:\n"); wypisz(tab);
zniszcz(&tab);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBMaWN6YmF7CiAgICBpbnQgd2FydG9zYzsKICAgIHN0cnVjdCBMaWN6YmEgKm5hc3RlcG55OwogICAgc3RydWN0IExpY3piYSAqcG9wcnplZG5pOwogICAgc3RydWN0IExpY3piYSAqb3N0YXRuaTsKfTsKCnZvaWQgZG9kYWooc3RydWN0IExpY3piYSAqKmdsb3dhLCBpbnQgd2FydG9zYyl7CiAgICBzdHJ1Y3QgTGljemJhICplbGVtZW50ID0gKHN0cnVjdCBMaWN6YmEqKW1hbGxvYyhzaXplb2Yoc3RydWN0IExpY3piYSkpOwogICAgZWxlbWVudC0+d2FydG9zYyA9IHdhcnRvc2M7CiAgICBlbGVtZW50LT5uYXN0ZXBueSA9IGVsZW1lbnQtPnBvcHJ6ZWRuaSA9IGVsZW1lbnQtPm9zdGF0bmkgPSBOVUxMOwoKICAgIGlmKCgqZ2xvd2EpID09IE5VTEwpewogICAgICAgICgqZ2xvd2EpID0gZWxlbWVudDsKICAgICAgICAoKmdsb3dhKS0+bmFzdGVwbnkgPSAoKmdsb3dhKTsKICAgICAgICAoKmdsb3dhKS0+cG9wcnplZG5pID0gKCpnbG93YSk7CiAgICAgICAgKCpnbG93YSktPm9zdGF0bmkgPSAoKmdsb3dhKTsKICAgIH0KICAgIGVsc2V7CiAgICAgICAgKCpnbG93YSktPm9zdGF0bmktPm5hc3RlcG55ID0gZWxlbWVudDsKICAgICAgICBlbGVtZW50LT5wb3ByemVkbmkgPSAoKmdsb3dhKS0+b3N0YXRuaTsKICAgICAgICBlbGVtZW50LT5uYXN0ZXBueSA9ICgqZ2xvd2EpOwogICAgICAgICgqZ2xvd2EpLT5wb3ByemVkbmkgPSBlbGVtZW50OwogICAgICAgICgqZ2xvd2EpLT5vc3RhdG5pID0gZWxlbWVudDsKICAgIH0KfQoKdm9pZCB3eXBpc3ooc3RydWN0IExpY3piYSAqZ2xvd2EpewogICAgc3RydWN0IExpY3piYSAqdGVtcCA9IGdsb3dhOwogICAgd2hpbGUodGVtcCAhPSBnbG93YS0+b3N0YXRuaSl7CiAgICAgICAgcHJpbnRmKCIlZCAiLCB0ZW1wLT53YXJ0b3NjKTsKICAgICAgICB0ZW1wID0gdGVtcC0+bmFzdGVwbnk7CiAgICB9CiAgICBwcmludGYoIiVkICIsIHRlbXAtPndhcnRvc2MpOwogICAgcHJpbnRmKCJcbiIpOwp9Cgp2b2lkIHNvcnR1aihzdHJ1Y3QgTGljemJhICpnbG93YSl7CiAgICBzdHJ1Y3QgTGljemJhICppdGVyXzEgPSBOVUxMOwogICAgc3RydWN0IExpY3piYSAqaXRlcl8yID0gTlVMTDsKICAgIGludCB0ZW1wID0gMDsKCiAgICBmb3IoaXRlcl8xID0gZ2xvd2E7IGl0ZXJfMSAhPSBnbG93YS0+b3N0YXRuaTsgaXRlcl8xID0gaXRlcl8xLT5uYXN0ZXBueSl7CiAgICAgICAgZm9yKGl0ZXJfMiA9IGdsb3dhOyBpdGVyXzIgIT0gZ2xvd2EtPm9zdGF0bmk7IGl0ZXJfMiA9IGl0ZXJfMi0+bmFzdGVwbnkpewogICAgICAgICAgICBpZihpdGVyXzEtPndhcnRvc2MgPiBpdGVyXzItPndhcnRvc2MpewogICAgICAgICAgICAgICAgdGVtcCA9IGl0ZXJfMS0+d2FydG9zYzsKICAgICAgICAgICAgICAgIGl0ZXJfMS0+d2FydG9zYyA9IGl0ZXJfMi0+d2FydG9zYzsKICAgICAgICAgICAgICAgIGl0ZXJfMi0+d2FydG9zYyA9IHRlbXA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCgp2b2lkIHpuaXN6Y3ooc3RydWN0IExpY3piYSAqKmdsb3dhKXsKICAgIHN0cnVjdCBMaWN6YmEgKnRlbXAgPSAoKmdsb3dhKTsKICAgIHN0cnVjdCBMaWN6YmEgKmRvWm5pc3pjemVuaWEgPSBOVUxMOwogICAgd2hpbGUodGVtcCAhPSAoKmdsb3dhKS0+b3N0YXRuaSl7CiAgICAgICAgZG9abmlzemN6ZW5pYSA9IHRlbXA7CiAgICAgICAgdGVtcCA9IHRlbXAtPm5hc3RlcG55OwoKICAgICAgICBmcmVlKGRvWm5pc3pjemVuaWEpOwogICAgICAgIGRvWm5pc3pjemVuaWEgPSBOVUxMOwogICAgfQp9CgppbnQgbWFpbih2b2lkKQp7CiAgICBzdHJ1Y3QgTGljemJhICp0YWIgPSBOVUxMOwogICAgZG9kYWooJnRhYiwgMTApOwogICAgZG9kYWooJnRhYiwgMik7CiAgICBkb2RhaigmdGFiLCAtMyk7CiAgICBkb2RhaigmdGFiLCA0MSk7CiAgICBkb2RhaigmdGFiLCA5OCk7CiAgICBkb2RhaigmdGFiLCAzKTsKICAgIGRvZGFqKCZ0YWIsIC0xMSk7CiAgICBwcmludGYoIlxuUHJ6ZWQgc29ydG93YW5pZW06XG4iKTsKICAgIHd5cGlzeih0YWIpOwogICAgc29ydHVqKHRhYik7CiAgICBwcmludGYoIlxuUG8gcG9zb3J0b3dhbml1OlxuIik7CiAgICB3eXBpc3oodGFiKTsKICAgIHpuaXN6Y3ooJnRhYik7CiAgICByZXR1cm4gMDsKfQoK