2014-10-09 83 views
-1

我正在编写一个拼写检查器,它将字典加载到memeory中并检查给定的文本是否有拼写错误的单词。为了实现这个我想使用一个哈希表。为了处理冲突,我将使用链接列表。字典中的每个单词都会被添加到相应哈希链表的开头。检查指针是否已分配

我创建了一个指向结构的指针数组,称为节点。这里是我的代码如下:

typedef struct node 
{ 
    char word[LENGHT + 1]; 
    struct node* next; 
} 
node; 

node* table[HASHTABLE_SIZE]; 

我的问题是:是否有可能检查表[X]已经指向一个节点,以了解是否node.next应指向一个链表的休息或者应该是NULL,因为它是链表中的第一个元素?

+0

你的意思是“应该指向......还是要成为NULL”?在这种情况下,你正在回答你自己的问题。在另一种情况下,你的句子是毫无意义的。 – Deduplicator 2014-10-09 20:35:16

+2

我完全不理解。你已经知道'NULL'。你大概理解'=='。什么是问题? – 2014-10-09 20:39:37

回答

2

因为要创建大小HASH_TABLE_SIZE的哈希表,这意味着有HASH_TABLE_SIZE没有。最喜欢的列表。最初所有链接列表的头将指向NULL。为了知道索引x处的表是否已经具有某个元素,您只需检查散列表中的索引x处的头是否为NULL。

if(table[x]) 
//head is already created for the linked list having x as index 
else 
//head is NULL append the first node in this linked list at index x.And make this node new head 
0
if (table[0] == NULL) 
    // Create memory & allocate everything 

注意,你也可以做

if (table[0]->next == NULL) 
    // assign next 

甚至用C

if (!table[0]) // If table[0] does not exist