doppelt Verkettete Liste - Sortierungsproblem
-
Hallo alle miteinander, ich habe folgendes Problem:
Adressenstruktur mit mehreren Elementen (Name, Vorname, Str., Hausnr. etc.)
Alle Elemente der Struktur sind ein array vom Typen char
Variable Anzahl an Objekten vom Typ dieser Struktur.
Objekte untereinander verkettet (doppelt verkettete Liste) Kopf der Liste enthält _keine_ Adressdaten.Benutzer sagt: Sortiere Liste nach folgendem Kriterium: Str. (Wahl wird per switch ermittelt)
Vorgehensweise beim Sortieren (selection sort):
Suche Minimum aus allen Objekten heraus
Verkette Objekte neu, aufsteigend nach Minima
Kleinstes --> nächst größeres --> ...Jetzt zu meinem Problem:
Adressstruktur vom Typ TAddr
TAddr * pHead
TAddr * pChild
TAddr * pParent
TAddr * pMin
TAddr * pCurrentElement
TAddr * pCopyCurrentElementAlgo:
1 pCurrentElement = pHead->pChild; 2 while (pCurrentElement != NULL) { 3 pCopyCurrentElement = pCurrentElement; 4 pMin = pCopyCurrentElement; 5 while(pCopyCurrentElement != NULL) { 6 if(stricmp(&pCopyCurrentElement->Name[0], &pMin->Name[0]) < 0) { 7 pMin = pCopyCurrentElement; 8 } 9 pCopyCurrentElement = pCopyCurrentElement->pChild; 10 } 11 if(pMin != pCurrentElement) { 12 if(pMin->pChild == NULL) { 13 pMin->pParent->pChild = NULL; 14 } else { 15 pMin->pParent->pChild = pMin->pChild; 16 } 17 if (pMin->pChild != NULL) { 18 pMin->pChild->pParent = pMin->pParent; 19 } 20 pHead->pChild = pMin; 21 pMin->pParent = pHead; 22 pMin->pChild = NULL; 23 pHead = pHead->pChild; 24 } else { 25 pHead->pChild = pMin; 26 pCopyCurrentElement = pMin->pChild; 27 pMin->pParent = pHead; 28 pMin->pChild = NULL; 29 pCurrentElement = pCopyCurrentElement; 30 pHead = pHead->pChild; 31 } 32 }
Wie kann ich diesen Algo in eine Funktion packen, sodass Zeile 6 des Algos weiß,
welches Element der Struktur es zu vergleichen gilt (je nach Benutzerauswahl)?
Irgendwie hänge ich da gerade dran...PS: Falls jmd. was gegen den Code hat, ist konstruktive Kritik willkommen,
solange sie einen gewissen Freundlichkeitsgrad aufweist.Danke im Voraus,
- Gin -