Hallo, ich habe ein Problem mit einer Aufgabe:
„Implementieren sie eine doppelt verkettete Liste. Benutzen sie dazu eine Klasse circle_list als Container. Zur Repräsentation der Listenknoten benutzen sie
die Klasse circle_list_node. Diese enthält Zeiger auf das vorherige und das
nächste Element und hält ein Objekt vom Typ circle.
Die Listenenden werden durch einen Nullzeiger NULL gekennzeichnet. Implementieren
sie den Standard-Konstruktor und Destruktor.
Implementieren sie ausserdem folgende Methoden: Zum Hinzufügen und Entfernen
von circle Objekten nutzen sie die Methoden push_front und pop_front.
Die Methoden front und back , geben das erste bzw. das letzte circle Objekt in
der Liste zurück. Die Methode size gibt die Länge der Liste zurück und die
Methode empty , ob die Liste leer ist.“
Dazu habe ich einmal folgendes:
struct circle\_list\_node
{
circle\_list\_node(circle const& r,
circle\_list\_node\* const p,
circle\_list\_node\* const n)
: data(r),
prev(p),
next(n)
{}
circle data;
circle\_list\_node\* prev;
circle\_list\_node\* next;
};
Das war uns vorgegeben, hier kommt das was ich bisher alleine hinbekommen habe:
#include "circle\_list\_node.hpp"
class circle\_list{
public:
circle\_list();
~circle\_list();
void push\_front(circle const& c);
void pop\_front();
circle const& front() const;
circle const& back() const;
private:
circle\_list\_node\* begin\_;
circle\_list\_node\* end\_;
unsigned size\_;
};
hier dazu noch die .cpp:
#include "circle\_list.hpp"
circle\_list::circle\_list():
begin\_(NULL),
end\_(NULL),
size\_(0) {}
void circle\_list::stuck\_out\_tongue:ush\_front(circle const& c) {
if(size\_ == 0) {
begin\_ = new circle\_list\_node(c, NULL, NULL);
last\_ = begin\_;
++size\_;
}
else {
circle\_list\_node\* tmp = begin\_;
}
}
Ich weiß so in etwa was eine doppelt verkettete Liste können muss. Aber ich habe echt große Probleme damit wie ich das realisiere. Ich weiß einfach nicht wie ich was zu schreiben habe.
Wenn mir da jemand helfen könnte wäre ich echt froh =)
Danke schonmal im Vorraus!
Gruß Ionel