###前提・実現したいこと
ここに質問したいことを詳細に書いてください
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
ハッシュテーブルに追加してその中にある名前で検索するプログラムです
###発生している問題・エラーメッセージ
segmentation fault :11
エラーメッセージ
###該当のソースコード
ここにご自身が実行したソースコードを書いてください
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define HASH_SIZE 3
typedef struct date{
char *name;
struct date *next;
}LIST;
int hash(char *ps);
void add_list(LIST *ht[],LIST *s);
char *findhash(LIST *ht[],char *findname);
int main(void){
int i;
char *findname="mutoh";
LIST *ht[HASH_SIZE];
LIST *p;
LIST s[6]={
{"yamada",NULL},
{"kawada",NULL},
{"mutoh",NULL},
{"amano",NULL},
{"fukuda",NULL},
};
for(i=0;i<HASH_SIZE;i++) ht[i]=NULL;
for(i=0;i<6;i++) add_list(ht,&s[i]);
for(i=0;i<HASH_SIZE;i++){
for(p=ht[i];p!=NULL;p=p->next) printf("%s\t",p->name);
printf("%d\n",i);
}
printf("There is %s\n",findhash(ht,findname));
return 0;
}
int hash(char *ps){
int total;
while(*ps!='\0') total+=*ps++;
return total%HASH_SIZE;
}
void add_list(LIST *ht[],LIST *padd){
int hvalue;
LIST *p;
hvalue=hash(padd->name);
if(ht[hvalue]==NULL)
ht[hvalue]=padd;
else{
p=ht[hvalue];
ht[hvalue]=padd;
padd->next=p;
}
}
char *findhash(LIST *ht[],char *findname){
int hvalue;
LIST *p;
hvalue=hash(findname);
p=ht[hvalue];
if(strcmp(p->name,findname)==0) return p->name;
while(p->next!=NULL){
p=p->next;
if(strcmp(p->name,findname)==0) return p->name;
}
return NULL;
}
###試したこと
課題に対してアプローチしたことを記載してください
打ち間違いがないか確認した。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
C言語
mac os
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/07/17 15:03
2017/07/17 15:08
2017/07/17 15:10