我认为这段代码加载了字典,但是如何检查它是否有效?
''' #包括 #include
#include "dictionary.h"
//number of linked lists in hashtable
#define HASH_SIZE 5000
#define长度45
char word;
//create node
typedef struct node
{
char word [LENGTH +1];
struct node *next;
}
node;
//create hashtable as an array of linked lists
node *hashtable[HASH_SIZE];
bool load(const char *dictionary)
{
while (fscanf(file, "%s", word) != EOF)
{
// malloc a node* for each new word
node *new_node = malloc(sizeof(node));
if(new_node == NULL)
{
unload();
return false;
}
// else if not pointing to NULL, copy word into node
else
{
strcpy(new_node)→ word, word);
new_node→next = head;
head = new_node;
}
}
return false;
int hash_function(const char*word)
{
int sum=0;
int word_length = strlen(word);
for(int i=0; i<word-length; i++)
{
sum+ = word[i];
}
int bucket = sum % HASH_SIZE;
return bucket;
}
'''
我认为这段代码加载了字典,但是如何检查它是否有效? 你能帮我吗?请帮助我测试此代码
答案 0 :(得分:0)
传统的CS50智慧说,load
的最终测试是check
!一些指针:
false
。也许按照the spec中的建议再次查看speller.c
。hashtable
被声明并且从不使用。 hash
函数已定义且从未使用过。 load
成功的第一个衡量标准是它不会崩溃。第二个是在size
完成之后,结果显示正确的“ WORDS IN DICTIONARY”。下一个度量是check
给出正确的结果(与keys
中的文件相比)。
您可能会发现debug50
是完成此pset的最好朋友。最后一些智慧的话(也来自规范):
在开发过程中,您可能会发现为拼写者提供 您自己的词典中包含的单词要少得多,以免您 努力调试内存中原本巨大的结构。在 字典/小字典就是这样的字典。