Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Baum nochmal

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.12.2004, 16:08 Uhr
~Tobias27
Gast



C++:
#include <stdlib.h>

#include <stdio.h>
#include <ctype.h>

struct baum
{
  double      wert;
  struct baum *links, *rechts;
};

struct baum    *wurzel = NULL;

void einfuege_baum( double zahl, struct baum  **baum_p )
{    
  if( NULL==(*baum_p)  )
  {
    *baum_p = malloc(sizeof(struct baum)); //Platz für neuen Knoten
    
    (*baum_p)->wert   = zahl;
    (*baum_p)->links  = NULL;
    (*baum_p)->rechts = NULL;
  }
  else
  {
    if( zahl < (*baum_p)->wert )
      einfuege_baum( zahl, &((*baum_p)->links) );
    if( zahl > (*baum_p)->wert )
      einfuege_baum( zahl, &((*baum_p)->rechts) );
    else
      ;
  }
}



Ich bekomme immer einen Kompilerfehler in der malloc() Zeile:
invalid conversion. Kann mir jemand da helfen vielleicht ?
Und kann jemand vllt nochmal kurz erklären warum man:
void einfuege_baum( ......, struct baum **baum_p ) nimmt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.12.2004, 16:17 Uhr
virtual
Sexiest Bit alive
(Operator)


Du musst casten. (

C++:
*baum_p  = (struct baum)malloc(...);


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.12.2004, 16:30 Uhr
~tobias27
Gast


verstehe leider nicht was du meinst, weiß nicht wie das gehen soll :/
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.12.2004, 16:41 Uhr
~Tobias27
Gast


ah gut

*baum_p = (struct baum*)malloc(sizeof (struct baum));

conversion from void* to baum* ging net. Jetzt klappts.

Verstehe ein wenig was nur hieran nicht:

void einfuege_baum( xxxxxxxxx, struct baum **baum_p )

warum struct **baum_p ?

Ein Zeiger auf einen Zeiger ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.12.2004, 16:42 Uhr
virtual
Sexiest Bit alive
(Operator)


War ja auch falsch... ;-)
Die Malloc Zeile sollte lauten:

C++:
*baum_p  = (struct baum*)malloc(sizeof(struct baum));


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.12.2004, 16:46 Uhr
~Tobias27
Gast


Jo trotzdem danke bin ja drauf gekommen, kannst du mir noch kurz das erklären bitte.

warum wurde in der Funktion als Parameter **baum_p aufgenommen ,

hat **baum_p auch wieder einen *links und *rechts weil es vom typ struct baum ist?

Verstehe das nicht ganz.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: