W
Ich habe noch eine ganz allgemeine Anmerkung:
Welche Sprache willst du lernen, C oder C++?
Das Problem, dass Anfänger hier mit einem Mischmasch vorbeikommen, ist hier sehr häufig anzutreffen (das ist nicht dein Fehler, @EJason, sondern vermutlich der deines Lehrers/Profs). Einerseits verwendest du cin/cout, die nur in C++ funktionieren. Andererseits sieht der Rest eher nach C aus.
struct Node {
int item;
struct Node* next;
struct Node* prev;
};
In C++ gibt es die Notwendigkeit nicht, das struct zu wiederholen. Es kann einfach heißen:
struct Node {
int item;
Node* next;
Node* prev;
};
Genauso hier:
void displayList(struct Node* node) { ... }
dies würde zu:
void displayList(Node* node) { ... }
Außerdem nennt sich NULL in C++ nullptr. Wichtig: der Typ ist unterschiedlich, d.h. während du int i = NULL schreiben kannst (NULL ist einfach nur eine fancy Schreibweise für die Zahl 0 + ein bisschen Spezialbehandlung vom Compiler, um Warnungen anzuzeigen), während int i = nullptr nicht kompiliert (ich habe hier int und nicht int * gewählt). Daher sollte man in C++ immer nullptr bevorzugen (bei Vergleichen mit nullptr/NULL lässt man das nullptr/NULL aber häufig eh weg, also statt if (pointer != nullptr) schreibst du if (pointer) - ist das gleiche).
Das sind erstmal die offensichtlichen Dinge.
Außerdem würde man in C++ den "int"-Datentyp für "item" als Parameter der Klasse übergeben, was sich dann template nennt - somit könntest du deine Node dann für beliebige Datentypen verwenden.
Dann können structs in C++ auch Funktionen enthalten. Das heißt, du könntest eine Klasse "struct LinkedList" erstellen und dieser dann Funktionen zum Einfügen geben (so wie in der Standardbibliothek std::list das macht, zum Beispiel).
Wenn du viel mit * oder gar mit ** von Hand rumhantierst, ist das oft ein Zeichen für schlechtes C++ (sofern es denn C++ sein soll), wärend das in C schon häufiger vorkommen kann.
Eine andere Sache ist noch die Ressourcenverwaltung. Hierfür nutzt man in C++ ein Konzept namens RAII - und damit man mit new/delete keine Fehler macht, lagert man die Ressourcenverwaltung anderswohin aus, wo sich jemand ausschließlich mit Ressourcenverwaltung beschäftigt. Ich sehe in deinem Code ein "new", aber kein "delete".
(Ende Rant)
PS: Es ist übrigens völlig OK, solche Dinge mit C zu machen, weil du dich dann vielleicht besser/stärker auf die eigentliche Datenstruktur konzentrieren kannst - Templates usw. lenken vermutlich am Anfang nur ab. Nur denke nicht, dass dein Code auch nur annähernd idiomatisches C++ ist.