C言語なら、俺に聞け! <11>
レス数が900を超えています。1000を超えると表示できなくなるよ。
0904デフォルトの名無しさん
NGNG#include <stdlib.h>
#include <string.h>
#define HSIZE 10
/* slist構造体とSLISTを定義する */
typedef struct slist{
char *pkey;
char *pchar;
struct slist *next;
}SLIST;
/* ハッシュテーブル */
SLIST *htable[HSIZE];
/* ハッシュ関数 */
unsigned long Hash(char *pch)
{
/* 種としてアドレス値を与える */
srand((unsigned int)pch);
/* rand()を使って擬似乱数を生成する */
return (unsigned long)(rand() % HSIZE);
}
/* ハッシュテーブルを作成する関数 */
void RegisterHashTable(char *pch1, char *pch2)
{
SLIST *lpnew, *lptemp;l
unsigned long h = Hash(pch1);
/* 新しいリスト要素を生成する */
lpnew = (SLIST *)malloc(sizeof(SLIST));
if(lpnew == NULL){
/* stderrにエラー文字列を出力する */
fprintf(stderr, "メモリエラー\n");
/* exit()関数を使って実行を終了する */
exit(1);
}
/* 新しい要素に値を代入する */
lpnew->pkey = pch1;
lpnew->pchar = pch2;
/* 自分自身とする */
lpnew->next = lpnew;
/* 未登録のケース */
if(htable[h] == NULL)
/* ハッシュテーブルに登録する */
htable[h] = lpnew;
else
{
lptemp = htable[h];
while(lptemp->next != lptemp)<--------------ここはどういううこと?
lptemp = lptemp->next;
/* リンクする */
lptemp->next = lpnew;
}
}
レス数が900を超えています。1000を超えると表示できなくなるよ。