检查指针是否已分配

时间:2014-10-09 20:32:57

标签: c

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

我创建了一个指向结构的指针数组,名为node。这是我的代码:

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

node* table[HASHTABLE_SIZE];

我的问题是:是否可以检查table [x]是否已经指向一个节点,以便知道node.next是否应该指向链接列表的其余部分,或者应该为NULL,因为它是第一个元素链表?

2 个答案:

答案 0 :(得分:2)

由于您正在创建大小为HASH_TABLE_SIZE的哈希表,这意味着HASH_TABLE_SIZE为no。喜欢list.Initially所有链表的头部将指向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 

答案 1 :(得分: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