Can';在浏览链表时不能访问指针
我正在制作一个简单的哈希表和一个哈希函数。表的每个元素都有一个指向另一个节点的指针,当发生冲突时,insert函数将使用该节点。问题是,当发生冲突时,我的代码在链接列表中导航时就会崩溃。下面是代码(如果有点长,很抱歉): 以下是主要功能:Can';在浏览链表时不能访问指针,c,hash,linked-list,C,Hash,Linked List,我正在制作一个简单的哈希表和一个哈希函数。表的每个元素都有一个指向另一个节点的指针,当发生冲突时,insert函数将使用该节点。问题是,当发生冲突时,我的代码在链接列表中导航时就会崩溃。下面是代码(如果有点长,很抱歉): 以下是主要功能: int main() { itemTabela *ptrTabela[TAM] = {}; inicializaTabela(ptrTabela); insere(6, "Chico", ptrTabela); insere(6
int main()
{
itemTabela *ptrTabela[TAM] = {};
inicializaTabela(ptrTabela);
insere(6, "Chico", ptrTabela);
insere(6, "Chico", ptrTabela);
return 0;
}
我是以错误的方式访问指针还是进行了非法访问?
谢谢你的时间 1)
初始化ItemAux
还需要ptr
初始化。如ItemAux->ptr=NULL代码>
(二)
应该是
ptrAux = TabelaHash[idx];
while(ptrAux->ptr != NULL)
{
ptrAux = ptrAux->ptr;
}
ptrAux->ptr = ItemAux;
(一)
初始化ItemAux
还需要ptr
初始化。如ItemAux->ptr=NULL代码>
(二)
应该是
ptrAux = TabelaHash[idx];
while(ptrAux->ptr != NULL)
{
ptrAux = ptrAux->ptr;
}
ptrAux->ptr = ItemAux;
“问题是,当发生冲突时,我的代码在链接列表中导航时就会崩溃。”--什么是崩溃?你有没有用调试器自己解决这个问题?是的!调试器说它无法访问下一个指针的内存。下面是它的确切文字:“无法访问地址0xbaadf045处的内存”发生在哪条语句上?什么指针有那个值?它发生在ptrAux=ptrAux->ptr语句中。[提示]int-funcaoHash(int-chave,char-nome[50])
首先让哈希值无符号;您不希望出现溢出,当然也不希望出现负面结果(将用作指针数组中的索引)。-->unsigned funcaoHash(unsigned chave,char*nome)
“问题是,当发生冲突时,我的代码在浏览链接列表时就会崩溃。”--崩溃是什么?你有没有用调试器自己解决这个问题?是的!调试器说它无法访问下一个指针的内存。下面是它的确切文字:“无法访问地址0xbaadf045处的内存”发生在哪条语句上?什么指针有那个值?它发生在ptrAux=ptrAux->ptr语句中。[提示]int-funcaoHash(int-chave,char-nome[50])
首先让哈希值无符号;您不希望出现溢出,当然也不希望出现负面结果(将用作指针数组中的索引)。-->unsigned funcaoHash(unsigned chave,char*nome)
如果排序不重要,则应在前面插入,而不是后面插入。如果排序不重要,则应在前面插入,而不是后面插入。
ptrAux = TabelaHash[idx]->ptr;
//Here the code breaks
while(ptrAux->ptr != NULL)
{
ptrAux = ptrAux->ptr;
}
ptrAux = ItemAux;
ptrAux = TabelaHash[idx];
while(ptrAux->ptr != NULL)
{
ptrAux = ptrAux->ptr;
}
ptrAux->ptr = ItemAux;