C++ Doppelt verkettete Liste

Markowski95

Newbie
Registriert
Jan. 2017
Beiträge
2
Hallo Leute,
Ich habe ein Problem, und zwar sitze ich an einer Aufgabe wo man mittels eines Sortierverfahrens eine doppelt verkette Liste sortieren muss. Es geht mir hier aber nur um die verkettete Liste.

Wir haben eine Klasse DVKE die für die Verwaltung da sein soll

class DVKE{
private:
DVKE * V; //Pointer auf Vorgänger
DVKE * N; //Pointer auf Nachfolger
public:
DVKE(){}
};

und eine Klasse GEOKO die für die Daten da ist

class GEOKO : private DVKE{
private:
int BrGr; //Breitengrad
int LaGr; //Längengrad
int BrMin; //Breitenminute
int LaMin; //Längenminute
double BrSec; //Breitensekunde
double LaSec; //Längensekunde

public:
GEOKO(){}
}; //class GEOKO

leider bin ich ein c++ Neuling und nun stehe ich seit Stunden vor dem Problem, das wenn ich die Daten einlesen soll, ich keine Ahnung hab wie der Konstruktor richtig zu schreiben ist, denn wenn ich das so wie in Java mache wirft der Compiler mir immer n Fehler aus

Ich bedanke mich schonmal im Vorraus
 
Bitte zeige doch den Fehler. Wird wahrscheinlich einer der Pointer sein die Java nicht hat.
 
beim DVKE:(DVKE * V, DVKE * N)
{
V = V;
N = N;
}

sagt er mir immer expected primary expression before *
 
Erm was soll es bringen zwei Variablen sich selber zu zuweisen. Entweder du schreibst nicht den richtigen Code oder du hast größere Verständnisprobleme als eine Compilerfehlermeldung.

Das Forum hier hat extra Tags für
Code:
[code]


Also nutze diese.
 
Schau dir mal den Wiki-Artikel zu Linked-List an:
https://de.wikipedia.org/wiki/Liste_(Datenstruktur)

Da wird super erklärt wie man neue Einträge hinzufügt, liest oder entfernt - inkl. Pseudocode.

Ein Tip grad bei Objektorientierter Programmierung: Löse dein Problem erstmal mit sowenig Klassen wie möglich und lass alles Public. Später kann man das immer noch auf private umstellen, Generisch machen und alle Konstrukturen definieren. Von vorne rein alles Generisch zu machen, was du mit dem private : DVKE tust macht es schlichtweg nur komplizierter.
 
Das Problem bei deinem Konstruktor ist, dass du V und E jeweils benutzt als Argumente des Konstruktors und AUCH als member der Klasse.
Die einfachste Lösung:
Du nennst die Member nicht einfach V und E sondern benennst alle Member zb mit "m_" vorher. Also m_V und m_E.
Durch diese Benennung vermeidest du solche Konflikte generell und für immer auch später beiMethoden.

Code:
DVKE(V* v, E* e)
{
  m_V = v;
  m_E = e;
}

Noch besser (speziell in C++) ist es folgendes zu machen: (aber wenn du's nicht verstehst mach halt das erste.. egal)
Code:
DVKE(V* v, E* e)
: m_V(v), m_E(e)
{
}

Ist es denn überhaupt Teil der Aufgabe selbst diese doppelt verkettete Liste zu implementieren? Geht es nicht nur ums sortieren?
C++ hat bereits doppelt verkettete Listen im Standard: list

Allerdings ist es evtl trotzdem nicht verkehrt erst die Liste zu programmieren weil: Listen sind einfacher als Sortierverfahren zu programmieren und daher eine gute Übung.
 
Zurück
Oben