Gast
2006-05-03, 17:02:27
Hi,
ich möchte die Int-Werte aus einem Suchbaum Inorder ausgebe, indem ich die Werte in einen String schreibe. Wenn im Baum die Werte 5, 9, 10 und 22 sind, soll die Ausgabe so aussehen:
5,9,10,22
Leider bekomme ich bei der Ausgabefunktion unten einen Segmentation Fault und ich weiss (natürlich) nicht weshalb. :(
Die Stringstückchen werden alle an str_l gehängt.
char* baumtostring(element_t *ele) {
char *str_l, *str_r, *tmp;
str_l = ""; str_r = ""; tmp = "";
if (ele != NULL) {
//linker Teilbaum
if (ele->links != NULL) str_l = baumtostring(ele->links);
// wenn im linken Teilbaum was war, Komma anhängen
if ( strcmp(str_l, "") != 0) strcat(str_l, ",");
// Wert des gerade betrachteten Knotens anhaengen
sprintf(tmp, "%d", ele->wert); // Integer-Wert umwandel
strcat(str_l, tmp); // und anhaengen
// jetzt rechter Teilbaum
if (ele->rechts != NULL) str_r = baumtostring(ele->rechts);
// wenn rechter Teilbaum nicht leer (in str_r steht was drin), Komma anfuegen
if ( strcmp(str_r, "") != 0) strcat(str_l, ",");
strcat(str_l, str_r); // Inhalt rechter Teilbaum oder leer - anfuegen
}
return str_l;
}
ich möchte die Int-Werte aus einem Suchbaum Inorder ausgebe, indem ich die Werte in einen String schreibe. Wenn im Baum die Werte 5, 9, 10 und 22 sind, soll die Ausgabe so aussehen:
5,9,10,22
Leider bekomme ich bei der Ausgabefunktion unten einen Segmentation Fault und ich weiss (natürlich) nicht weshalb. :(
Die Stringstückchen werden alle an str_l gehängt.
char* baumtostring(element_t *ele) {
char *str_l, *str_r, *tmp;
str_l = ""; str_r = ""; tmp = "";
if (ele != NULL) {
//linker Teilbaum
if (ele->links != NULL) str_l = baumtostring(ele->links);
// wenn im linken Teilbaum was war, Komma anhängen
if ( strcmp(str_l, "") != 0) strcat(str_l, ",");
// Wert des gerade betrachteten Knotens anhaengen
sprintf(tmp, "%d", ele->wert); // Integer-Wert umwandel
strcat(str_l, tmp); // und anhaengen
// jetzt rechter Teilbaum
if (ele->rechts != NULL) str_r = baumtostring(ele->rechts);
// wenn rechter Teilbaum nicht leer (in str_r steht was drin), Komma anfuegen
if ( strcmp(str_r, "") != 0) strcat(str_l, ",");
strcat(str_l, str_r); // Inhalt rechter Teilbaum oder leer - anfuegen
}
return str_l;
}