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);
...
}
添加的代碼:
int hashFunction(char *s) {
int hashValue;
for(hashValue = 0; *s != '\0'; s++) {
hashValue += *s;
}
return hashValue % tableSize;
}
是否可以在'typedef struct {[...]}中的struct SinglyLinkedList' SinglyLinkedList'實際上是一個不同的/ new/local類型?由於'SinglyLinkedList'尚未定義,所以您可能會生成一個指針對象,這似乎很奇怪。 – JHBonarius
@wildplasser對不起,剛添加了hashTable的代碼 –
添加了一個額外的層次。並且讓'hashTable'指向一個指針數組(或指向指針的指針,而malloc()則是你想要的大小)。順便說一下:tableSize是未初始化的。 – wildplasser