D
deep90sravioli
Gast
N'Abend allerseits,
ich hocke gerade vor einem C++ Programm bei welchem ich eine verkettete Liste erstelle. Die verkettete Liste, bei der ich Elemente im Code definiere funktioniert, allerdings habe ich nun Probleme dabei meine Elemente selbst einzutragen.
Mein Ziel ist es nun, über die Funktion laeuferzug() auszuführen. In der Funktion soll ein neues Element erstellen werden, welches entweder die Informationen des vorherigen Knoten übernimmt oder komplett leer ist, soll dann aber mit der Methode newEl() mit neuen Informationen (welcher vorher von cin in Hilfsvariablen eingelesen werden) eingetragen werden. Das Problem ist allerdings, das der Knoten nicht ans Ende angehängt wird..
Kann mir da jemand helfen?
Edit: Programm ist für die Uni, verwendet wird VS2019
MfG.
ich hocke gerade vor einem C++ Programm bei welchem ich eine verkettete Liste erstelle. Die verkettete Liste, bei der ich Elemente im Code definiere funktioniert, allerdings habe ich nun Probleme dabei meine Elemente selbst einzutragen.
Header:
cSchachfeld.cpp
main.cpp
C++:
#pragma once
#define NIL (cSchachfeld*)0
class cSchachfeld
{
private:
int y;
char x;
cSchachfeld* prev;
public:
cSchachfeld(char x_in, int y_in, cSchachfeld* prev_in);
~cSchachfeld();
cSchachfeld* newEl(char x_in, int y_in);
void print_list();
friend cSchachfeld* laeuferzug(cSchachfeld*);
};
cSchachfeld.cpp
C++:
#include "cSchachfeld.h"
#include <iostream>
using namespace std;
cSchachfeld::cSchachfeld(char x_in, int y_in, cSchachfeld* prev_in) : x(x_in), y(y_in), prev(prev_in)
{
}
cSchachfeld::~cSchachfeld()
{
if(prev != NIL)
delete prev;
cout << "delete: " << x << y << endl;
}
cSchachfeld* cSchachfeld::newEl(char x_in, int y_in)
{
return new cSchachfeld(x_in, y_in, this); // hiermit soll er sich selbst als vorgänger reinschreiben
}
void cSchachfeld::print_list()
{
if (prev != NIL)
prev->print_list();
cout << "print: " << x << y << endl;
}
main.cpp
C++:
#include "cSchachfeld.h"
#include <iostream>
using namespace std;
/* X ist der Character und Y ist der Integer */
cSchachfeld* laeuferzug(cSchachfeld* old)
{
char buchst;
int zahl;
cout << "Bitte geben Sie 2 Werte ein: ";
cin >> buchst >> zahl;
cSchachfeld* laeufer = old;
laeufer->newEl(buchst, zahl);
return laeufer;
}
int main() {
cout << "\tProgramm zur Erstellung von Verketteten Listen\n" << endl;
cSchachfeld* p_act = new cSchachfeld('E', 7, NIL); // Erstes Element in der Liste
p_act = p_act->newEl('F', 5); // 2. Element in der Liste
p_act = laeuferzug(p_act); // 3. Element in der Liste
p_act->print_list();
delete p_act;
return 0;
}
Mein Ziel ist es nun, über die Funktion laeuferzug() auszuführen. In der Funktion soll ein neues Element erstellen werden, welches entweder die Informationen des vorherigen Knoten übernimmt oder komplett leer ist, soll dann aber mit der Methode newEl() mit neuen Informationen (welcher vorher von cin in Hilfsvariablen eingelesen werden) eingetragen werden. Das Problem ist allerdings, das der Knoten nicht ans Ende angehängt wird..
Kann mir da jemand helfen?
Edit: Programm ist für die Uni, verwendet wird VS2019
MfG.
Zuletzt bearbeitet von einem Moderator: