P
@humesikkins: vielleicht ist die aufgabenstellung ja so...
aber schlussendlich ist es ja egal, listen kann man immer wieder verwenden. zu den listen: man braucht erstens ein struct für die knotenelemente:
typedef struct NodeItem {
char *pszData; // zeiger auf den text
NodeItem *pNext; // zeiger auf das nächste element
} NODEITEM, *PNODEITEM;
dann brauchst du einen zeiger auf das erste element:
NODEITEM FirstElement = new NODEITEM;
nächstens würde ich auch noch ein letztes element erstellen, das ebenfalls keine daten enthält und in pNext permanent einen NULL-zeiger hat.
NODEITEM FirstElement->pNext = new NODEITEM;
FirstElement->pNext->pNext = NULL;
falls du jetzt ein neues element hinzufügen musst, machst du das einfach so ähnlich wie
NODEITEM NewElement = new NODEITEM;
NewElement->pszData = pszDeinText;
naja, und um NewElement->pNext zu füllen musst du jetzt wohl oder übel mit einer schleife die ganze kette ablaufen bis du bei
CurrentElement->pNext->pNext
eine NULL findest. (einfacher wäre es mit einer doppelt verketteten liste) dort kannst du dann dein neues element einsetzen:
NewElement->pNext = CurrentElement->pNext;
CurrentElement->pNext = NewElement;
falls du die wörter in alphabetischer reihenfolge haben musst, dann könntest du an dieser stelle auch noch etwas mit strcmp basteln. weiterhin könntest du im struct auch einen zähler für das vorkommen der unterschiedlichen wörter einbauen, den du bei strcmp(...)==0 einfach inkrementierst ohne ein neues element zu erstellen...
vom auslesen her sieht es dann wieder ähnlich aus. übrigens kann man am ende der kette statt auf ein letztes element wieder auf das erste element verweisen. ach ja, und wenn du die daten im element speicherst, würde ich dort unbedingt mit "new" speicher reservieren und den string mit memcpy o.ä. reinkopieren - sonst hast du irgendwann mal mehrere zeiger auf den gleichen text oder so naja, das ganze in eine klasse, die die speicherverwaltung übernimmt, und fertig...
mfg
puenktli