Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform,
sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc
zu kontaktieren.
/* * myList - Version 0.02 * * (c) 2005 by paedubucher * * Eine einfache C++-Klasse, welche eine minimale ArrayList für vorzeichenlose * Integers darstellt. Es können dabei Zahlen von 0 bis zur Integer-Obergrenze * gespeichert werden. * */
// Struktur für die Speicherung eines Werts struct Value
{ public:
Value *vluNext; // Zeiger auf das nächste Element unsignedint intValue; // Wert
};
// Eine einfache ArrayList für Zahlen von 0 bis zur Integer-Obergrenze class List
{ private:
Value *vluFirst; // letztes Element der Liste
Value *vluLast; // letztes Element der Liste unsignedint intCount; // Anzahl Elemente in der Liste
// Gibt den Listeneintrag mit dem übergebenen Index zurück
Value *getValue(unsignedint intIndex) const
{ unsignedint n = 0;
Value *vluTemp = this->vluFirst; // erstes Element
// Index im gültigen Bereich? if(intIndex < this->intCount)
{ // vluTemp um intIndex verschieben for(; n < intIndex && vluTemp->vluNext != 0; n++)
vluTemp = vluTemp->vluNext; // nächstes Element
}
return (vluTemp); // Rückgabe von 0 bedeutet ungültigen Index!
}
ich hab das Kapitel über Typen vor kurzem gelesen, deshalb erinner ich mich an diese Stelle (§4.4):
"Die vorzeichenlosen Typen sind ideal für die Anwendung als Bitfeld. Ein unsigned anstatt eines inz zu benutzen, um ein Bit mehr zur Darstellung positiver Zahlen zu erhalten, ist fast immer eine schlechte Idee."
----------------------------------------------------- \"I have to share the credit. I may have invented it, but I think Bill made it famous. -- When he used it for the NT logon, that\'s what I meant. okay?\" (David Bradley über Ctrl-Alt-Del)
Meine Klasse kann zwar nicht mit negativen Integers umgehen, dafür kann sie mit dem gleichen Speicherplatz grössere Ganzzahlen aufnehmen ;-)
Für die praktische Verwendung würde man natürlich ein Template definieren, der Sinn der Klasse ist es aber nur, eine verkettete Liste zu abstrahieren. Welchen Datentyp man dafür aussucht, ist eigentlich relativ egal...
Na klar, sowas vergisst man bei den heutigen modernen Programmiersprachen schnell ;-)
Ich musste leider noch feststellen, dass ich durch den gewaltigen Java und .Net Einfluss alle Methoden inline definiert habe. Ich werde das ganze dann noch einmal überarbeiten, dann implementiere ich vielleicht auch die Grenzwerte irgendwie...
Leider funktioniert "Artikel bewerten" bei meinen Browsern nicht...
Ein paar Anmerkungen:
- intTop wird zu spaet gesetzt. (nach Aufruf von setBottom => setBottom funktioniert nicht)
- es fehlen ein paar const's bei den Signaturen (int get() const etc.)
- sollten Indizes nicht unsigend int sein?
- Fehlerbehandlung (bei new) fehlt absichtlich?
ich seher außerdem, dass der Code die Seite etwas sprengt bei 1024x768. hmm, dies werde ich noch demnächst anpassen...
----------------------------------------------------- "...denn wir arbeiten nicht nur um uns selbst zu verbessern, sondern auch den Rest der Menschheit!"
Ich hab leider die Farben rausnehmen müssen, da die Software eines bekannten Monopolisten scheinbar nicht mit xml umgehen kann. Pfft...
----------------------------------------------------- "...denn wir arbeiten nicht nur um uns selbst zu verbessern, sondern auch den Rest der Menschheit!"