Hallo, hab hier ne Aufgabe, die ich leider nicht richtig verstehe. Ich müsste sie nichtmal komplett lösen (eine Teilaufgabe würde reichen, ist nur zur Übung).
Das Ganze bezieht sich auf diese .CPP:
Alles anzeigen
Gruß,
cewbie
Aufgabenstellung:
¨
Gegeben ist ein Beispielprogramm zur Verwendung von Listen. Dieses besteht aus einer Klasse List, welches eine einfach verkettete
Liste zur Abspeicherung von positiven ganzen Zahlen implementiert und der main-Funktion,
über welche die Liste mit Elementen gefüllt wird. Das Anhängen neuer Listenelemente erfolgt
über die Methode append.
¨
a) Durch das Anhangen der neuen Elemente an die Liste, ergibt sich eine unsortierte Folge
von Zahlen.
Erweitern Sie die Klasse List um die Methode insert zur Implementierung einer sortier-
ten Liste. Uber das Einfugen von Elementen mit der insert-Funktion wird ein sortiertes
Einfügen von Elementen ermoglicht, sodass zu jeder Zeit eine aufsteigende Folge von
Zahlen in der Liste gegeben ist.
b) Schreiben Sie eine Methode delete zum gezielten Loschen von Listenelementen. Diese
bekommt als Parameter den Wert der zu loschenden Elemente. Erweitern Sie das Haupt-
über welche der Benutzer selbst gewahlte Elemente aus der
programm um eine Schleife,
Liste löschen kann. Weiterhin soll nach jedem Loschen der vollstandige Inhalt der Liste
ausgegeben werden.
Das Ganze bezieht sich auf diese .CPP:
Quellcode
- #include <iostream>
- using namespace std;
- /*
- * 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 naechste Element
- unsigned int intValue; // Wert
- };
- // Eine einfache ArrayList fuer Zahlen von 0 bis zur Integer-Obergrenze
- class List
- {
- private:
- Value *vluFirst; // erstes Element der Liste
- Value *vluLast; // letztes Element der Liste
- unsigned int intCount; // Anzahl Elemente in der Liste
- // Gibt den Listeneintrag mit dem uebergebenen Index zurueck
- Value *getValue(unsigned int intIndex) const
- {
- unsigned int n = 0;
- Value *vluTemp = this->vluFirst; // erstes Element
- // Index im gueltigen Bereich?
- if(intIndex < this->intCount)
- {
- // vluTemp um intIndex verschieben
- for(; n < intIndex && vluTemp->vluNext != NULL; n++)
- vluTemp = vluTemp->vluNext; // nächstes Element
- }
- else
- vluTemp = NULL;
- return (vluTemp); // Rueckgabe von NULL bedeutet ungueltigen Index!
- }
- public:
- // Konstruktor
- List()
- {
- this->vluFirst = NULL;
- this->vluLast = NULL;
- this->intCount = 0;
- }
- // haengt der Liste einen neuen Eintrag mit dem uebergebenen Wert an
- void append(unsigned int intNewValue)
- {
- Value *vluNew = 0;
- // neues Element erstellen
- vluNew = new Value;
- vluNew->intValue = intNewValue;
- vluNew->vluNext = NULL;
- if(this->vluFirst == 0)
- {
- // erstes Element
- this->vluFirst = vluNew;
- this->vluLast = vluNew;
- }
- else
- {
- // anhaengen
- this->vluLast->vluNext = vluNew;
- this->vluLast = vluNew;
- }
- this->intCount++; // Anzahl der Listenelemente erhoehen
- }
- // gibt den Wert des Elements mit dem uebergebenen Index zurueck
- int get(unsigned int intIndex) const
- {
- int intRet = -1; // Dummy-Wert
- Value *vlu = NULL;
- // Index gueltig?
- if(intIndex < this->intCount)
- {
- vlu = this->getValue(intIndex); // Listeneintrag suchen
- if(vlu != NULL)
- intRet = vlu->intValue; // Wert speichern
- }
- return (intRet);
- }
- // Anzahl der Listenelemente zurueckgeben
- int getCount() const
- {
- return (intCount);
- }
- };
- int main ()
- {
- List zahlenliste;
- int zahl = 0;
- while (zahl >= 0)
- {
- cout << "Bitte naechste Zahl eingeben (Abbruch bei Zahlen < 0): ";
- cin >> zahl;
- if (zahl >= 0)
- {
- zahlenliste.append(zahl);
- }
- }
- cout << "Liste der eingegebenen Zahlen " << endl;
- for (int i=0; i < zahlenliste.getCount(); i++)
- cout << zahlenliste.get(i) << " ";
- return 0;
- }
Gruß,
cewbie