Für eine Zuweisung muss ich Code schreiben, der eine Zeichenfolge als Eingabe akzeptiert und zählt, welches Wort in dieser Zeichenfolge am häufigsten verwendet wird.Das Speichern von Objekten in BinarySearchTree führt zu seltsamen Dereferenzierungsproblemen.
Wir müssen dies mithilfe eines binären Suchbaums einer Struktur namens "WordCount" implementieren, der ein Zeichenarray und die Anzahl der Male enthält, wie oft das Wort angezeigt wird.
So wird die Struktur definiert.
struct wordcount {
char word[80];
int count;
};
typedef struct wordcount WordCount;
Ein binärer Suchbaum einen Weg Knoten erstellen muß, das ist der Code:
BSTnode* createNode(void* item) {
BSTnode* newNode = (BSTnode*) malloc(sizeof(BSTnode));
newNode->item = item;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
Wenn ich speichere Sie die Wordcount Struktur des Binary Search Baum innerhalb von und versuchen, das Objekt zuzugreifen, und dann auf das Wort zugreifen, bekomme ich einen Segmentierungsfehler.
Wenn ich nur versuche, auf das Element des Baumes zuzugreifen, bekomme ich die Char-Wort-Array. Das macht keinen Sinn, weil ich die wordCount-Struktur speichere, also sollte ich es zweimal dereferenzieren müssen.
int main(int argc, char* argv[]) {
if (argc >= 1) {
WordCount* firstWord = (WordCount*) malloc(sizeof(WordCount));
strcpy(firstWord->word,argv[1]);
firstWord->count = 0;
BSTnode* BST = createNode(firstWord);
printf("%s", BST->item); // should be BST->item->word...but this does not work and says that it cannot find "word" which is apart of
}
/*int i;
char string[80];
for(i = 1; i < argc; i++) {
sscanf(argv[i], "%s", string);
//printf("%s ", string);
//insert(main, argv[i], wordCountCompare);
}*/
}
Jede Hilfe wird sehr geschätzt. Lassen Sie mich wissen, ob meine Erklärung völlig vage oder unvollständig ist oder ob ich etwas völlig übersehen habe.
Ich möchte auch klarstellen, dass die printf-Anweisungen nur zum Debuggen sind, nur werden sie nicht Teil des eigentlichen Programms sein ... aber der Punkt steht immer noch.
Definition von BSTnode:
struct bstnode {
void *item;
struct bstnode *left;
struct bstnode *right;
};
typedef struct bstnode BSTnode;
Ist sollte 'printf sein ("% s", BST-> item.word)'. –
'Element' ist ein Zeiger. Sollte es nicht "BST-> Gegenstand-> Wort" sein? –
sagt, dass Wort ist nicht getrennt von der Struktur oder Union, wieder was ist seltsam, so frage ich mich, was ich falsch mache. – Chris