2014-10-09 57 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