Hallo, ich habe in C eine Funktion geschrieben, mit welcher ich Einträge
einer Liste aufsteigend nach deren ID (data_.identifier_) sortieren
soll. Die ID ist ein unsigned int.
Mein Problem ist, dass, nachdem ich das erste Mal die Einträge
vertauscht habe, dass ich dann in die zweite if springe, was ich aber
nicht will.
Weiß jemand, was ich hier für einen Denkfehler habe.
hier mein Code
1 | List *BubbleSort(List *list)
|
2 | {
|
3 | List *present = NULL;
|
4 | List *next = NULL;
|
5 | List *temporary= NULL;
|
6 |
|
7 | for(present = list; present->next_ != NULL; present = present->next_)
|
8 | {
|
9 | for(next = present->next_; next->next_ != NULL; next = next->next_)
|
10 | {
|
11 | if(present->data_.identifier_ > next->data_.identifier_)
|
12 | {
|
13 | temporary = present;
|
14 | present = next;
|
15 | next = temporary;
|
16 | }
|
17 |
|
18 | if(present->data_.identifier_ == next->data_.identifier_)
|
19 | {
|
20 | list = present;
|
21 | return list;
|
22 | }
|
23 | }
|
24 | }
|
25 | list = present;
|
26 | return list;
|
27 | }
|