2017-03-02 11 views
0

私は次の警告(リンクリスト)警告:互換性のないポインタ型から割り当て

警告メッセージ取得しています:

警告:互換性のないポインタ型からの代入行を次のように

警告:

for(ptr = & hashTable [hashFunction(s)]; ptr!= NULL; ptr = ptr-> next)

私の問題:

私はこれを修正するには見当がつかない。問題は何ですか?これを修正する方法は? ありがとうございます。以下は

ソースコードです:

typedef struct { 
struct SinglyLinkedList *next; 
char name[50];      // key 
int mid;       // mark 
int final; 
} SinglyLinkedList; 

// Global Variables 
int tableSize; 
SinglyLinkedList *hashTable; 

... 

SinglyLinkedList* find (char *s) 
{ 
    SinglyLinkedList *ptr; 

    for (ptr = &hashTable[hashFunction(s)]; ptr != NULL; ptr = ptr->next) { 
     if (strcmp(s, ptr->name) == 0) { 
      return ptr; //found 
     } 
    } 
return NULL; //not found 
} 

... 

int main(void) { 
... 

hashTable = (SinglyLinkedList*) malloc (sizeof(SinglyLinkedList) * tableSize); 

... 
} 

を追加しましたCODE:

int hashFunction(char *s) { 
    int hashValue; 

    for(hashValue = 0; *s != '\0'; s++) { 
     hashValue += *s; 
    } 

    return hashValue % tableSize; 
} 
+2

それは 'のtypedef構造体中'構造体SinglyLinkedList'が{[...]} SinglyLinkedList'は、実際には異なる/新しい/ローカル型であることだろうか? 'SinglyLinkedList'がまだ定義されていないので、あなたはポインタオブジェクトを生成することができないのです。 – JHBonarius

+0

@wildplasser申し訳ありません、ただhashTableのコードを追加しました –

+0

追加レベルの追加を追加してください。そして、 'hashTable'をポインタの配列(またはポインタへのポインタ、malloc()のサイズ)にします。ところで:tableSizeは初期化されていません。 – wildplasser

答えて

1

私は通常のtypedefノードのこのような。それは私のための警告を取り除いた。

typedef struct SinglyLinkedList_TAG { 
    struct SinglyLinkedList_TAG *next; 
    char name[50];      // key 
    int mid;       // mark 
    int final; 
} SinglyLinkedList; 
+0

ありがとう、ありがとう! –

関連する問題