You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言实现哈希链时赋值NULL报错:类型不兼容问题求助

解决哈希链实现中的类型不兼容错误

错误原因

你定义的chain是node(即struct hashNode)类型的数组,每个元素是完整的结构体实例,但NULL是指针类型(void*),C语言不允许将指针直接赋值给结构体变量,因此触发类型不兼容错误。

解决方案

哈希链(链接法)的核心是每个哈希桶存储链表的头指针,而非直接存储结构体。因此需要将数组类型修改为指针数组:

修改后的完整代码:

#include<stdio.h>
#include<stdlib.h>
#define size 10

typedef struct hashNode
{
    int data;
    struct hashNode *next;
} node;

int main()
{
    // 将数组改为指针数组,每个元素是指向node结构体的指针
    node *chain[size];
    
    // 初始化每个哈希桶的头指针为NULL,表示空链表
    for(int i=0; i<size; i++)
        chain[i] = NULL;
    
    // 后续可以实现insert函数,向对应哈希桶的链表中插入节点
    // insert(chain, 10);
    
    return 0;
}

补充说明

修改后,chain[i]作为链表的头指针,当需要插入元素时,只需为新节点分配内存,然后将其挂载到对应桶的链表头部(或尾部),这完全符合链接法处理哈希冲突的逻辑。

内容的提问来源于stack exchange,提问作者Debbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 12:29:54