我正在尝试在 C 中实现链接(哈希)。到目前为止我已经编写了以下代码:
\n#include<stdio.h>\n#include<stdlib.h>\n#define size 10\n\ntypedef struct hashNode\n{\n int data;\n struct hashNode *next;\n} node;\n\nint main()\n{\n node chain[size];\n \n for(int i=0; i<=(size-1); i++)\n chain[i] = NULL;\n \n //insert(chain, 10);\n \n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n我收到以下错误:
\n#include<stdio.h>\n#include<stdlib.h>\n#define size 10\n\ntypedef struct hashNode\n{\n int data;\n struct hashNode *next;\n} node;\n\nint main()\n{\n node chain[size];\n \n for(int i=0; i<=(size-1); i++)\n chain[i] = NULL;\n \n //insert(chain, 10);\n \n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n
看起来您试图最初使所有nodes 指向NULL,但nodes 不是指针。他们有一个名为的指针成员next,所以你应该做的是:
for(int i=0; i<=(size-1); i++)
chain[i].next = NULL;
Run Code Online (Sandbox Code Playgroud)
您还可以跳过循环并在定义数组时直接初始化数组:
node chain[size] = {0};
Run Code Online (Sandbox Code Playgroud)
旁注:不要写i<=(size-1). size它具有额外的认知负荷,并且在某种unsigned类型(常见)的情况下并不安全。写i < size。