Tomsen1410
Mitglied
Hey,
ich habe hier eine Lern DVD von video2brain üer C++.
So jetzt hat hier der nette Herr im Video ein Tutorialvideo gezeigt, das ich nciht ganz verstanden habe
Nämlich geht es um Pointer.
Und um das noch zu verschönern, geht es um Pointer auf Pointer...
Ich weiß nciht wirklich wozu man das braucht und verstehe das Beispiel Programm auch nicht sehr. Vor allem bei der "eintragen" funktion mit dem Pointer auf einen Pointer.
Wäre sehr nett wenn mir einer das Schritt für Schritt erklären würde. Hier das BspProgramm:
ich habe hier eine Lern DVD von video2brain üer C++.
So jetzt hat hier der nette Herr im Video ein Tutorialvideo gezeigt, das ich nciht ganz verstanden habe

Nämlich geht es um Pointer.
Und um das noch zu verschönern, geht es um Pointer auf Pointer...
Ich weiß nciht wirklich wozu man das braucht und verstehe das Beispiel Programm auch nicht sehr. Vor allem bei der "eintragen" funktion mit dem Pointer auf einen Pointer.
Wäre sehr nett wenn mir einer das Schritt für Schritt erklären würde. Hier das BspProgramm:
PHP:
#include <iostream>
#include <string>
using namespace std;
// Baumstruktur für Sortierung
struct link_str {
string *pbegriff;
link_str *left;
link_str *right;
};
void eintragen(link_str **pstart, string s1)
{ // einsortieren an bestehende liste
link_str *pliste;
pliste = *pstart; // Startwert
// 1. sonderfall
if (pliste == NULL) {
pliste = (link_str *) malloc(sizeof(link_str));
pliste->pbegriff = new string(s1);
pliste->left = NULL;
pliste->right = NULL;
*pstart = pliste;
return;
}
// suchen nach leerem Eintrag
while (pliste != NULL) {
if (s1 <= *(pliste->pbegriff)) { // lexiographic kleiner oder gleich
if (pliste->left != NULL) {
pliste = pliste->left;
} else {
pliste->left = (link_str *) malloc(sizeof(link_str));
pliste = pliste->left;
pliste->pbegriff = new string(s1);
pliste->left = NULL;
pliste->right = NULL;
pliste = NULL; // schleife zueende
}
} else {// lexigraphisch groesser
if (pliste->right != NULL) {
pliste = pliste->right;
} else {
pliste->right = (link_str *) malloc(sizeof(link_str));
pliste = pliste->right;
pliste->pbegriff = new string(s1);
pliste->left = NULL;
pliste->right = NULL;
pliste = NULL; // schleife zueende
}
}
} // while
// ende
}
void ausgabe(link_str *pliste)
{ // rekursiv
if (pliste == NULL) return;
ausgabe(pliste->left);
cout << "Sortiert: " << *( pliste->pbegriff) << endl;
ausgabe(pliste->right);
}
void freigeben(link_str *pliste)
{
if (pliste == NULL) return;
freigeben(pliste->left);
freigeben(pliste->right);
delete pliste->pbegriff;
free(pliste);
}
int main()
{
link_str *pstart = NULL;
link_str *pliste = NULL;
string s1;
// Fuellen der Liste
do {
getline(cin,s1,'\n');
if (s1 != "QUIT") {
eintragen(&pstart,s1);
}
} while (s1 != "QUIT");
// AUSGABE der Liste
ausgabe(pstart);
// FREIGABE der Liste
freigeben(pstart);
pstart = NULL;
return(0);
}