Для назначения мне нужно написать код, который берет строку в качестве входных данных и подсчитывает, какое слово наиболее часто используется в этой строке.Хранение объекта в BinarySearchTree приводит к странным проблемам разыменования
Нам нужно реализовать это, используя двоичное дерево поиска структуры «WordCount», которая содержит массив символов и количество раз, сколько раз появляется слово.
Так определяется структура.
struct wordcount {
char word[80];
int count;
};
typedef struct wordcount WordCount;
Двоичное дерево должно иметь возможность создавать узлы, это код:
BSTnode* createNode(void* item) {
BSTnode* newNode = (BSTnode*) malloc(sizeof(BSTnode));
newNode->item = item;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
Когда я хранить структуру WordCount внутри из двоичного дерева поиска и попытка доступа к элементу, и затем получить доступ к слову, я получаю ошибку сегментации.
Если я просто попытаюсь получить доступ к элементу дерева, я получу массив символов. Это не имеет смысла, потому что я храню структуру wordCount, поэтому мне придется разыгрывать ее дважды.
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);
}*/
}
Любая помощь очень ценится. Дайте мне знать, было ли мое объяснение полностью расплывчатым или неполным, или если я полностью игнорирую что-то.
Я также хочу уточнить, что утверждения printf предназначены только для отладки только они не будут отделены от реальной программы ... однако точка все еще стоит.
Определение BSTnode:
struct bstnode {
void *item;
struct bstnode *left;
struct bstnode *right;
};
typedef struct bstnode BSTnode;
Is должна быть 'Е ("% s", BST-> item.word)'. –
'item' является указателем. Разве это не BST-> item-> word'? –
говорит, что слово не является исключением структуры или объединения, опять же, что странно, поэтому мне интересно, что я делаю неправильно. – Chris