なぜ、10 や 13 や 14 という数値を書いたのでしょうか?
C
1#include <stdio.h> // printf
2#include <stdlib.h> // malloc
3
4typedef struct node { // ★
5 int data;
6 struct node *next; // ★
7} Node;
8
9int main(void)
10{
11 Node *table[13]; // ★ 10 -> 13
12 Node *temp;
13 int x[] = { 1, 25, 3, 12, 34, 15, 5, 9, 11, 31 };
14 int nx = sizeof(x) / sizeof(int);
15 int i, idx; // ハッシュ表の初期化
16 for (i = 0; i < 13; i++) {
17 table[i] = NULL;
18 }
19 for (i = 0; i < nx; i++) { // ハッシュ表への値の追加
20 idx = x[i] % 13; // ★ 14 -> 13
21 temp = malloc(sizeof(Node));
22 temp->data = x[i];
23 temp->next = table[idx]; // ★
24 table[idx] = temp; // ★
25 }
26 for (i = 0; i < 13; i++) { // ハッシュ表の参照
27 printf("%d: ", i);
28 for (temp = table[i]; temp != NULL; temp = temp->next) { // ★
29 printf(" %d", temp->data); // ★
30 }
31 printf("\n");
32 }
33}
本当は #define N 13 などとして、N を使うべきでしょう。