タイトルについて申し訳ありませんが、この問題を1行で説明するのは非常に困難です。.txtファイルから単語を読み取り、リンクリストとハッシュテーブルの両方に配置しています。また、時計を使用して、各機能の実行に費やされた時間を記録しています。
listclock = clock();
list = insertlist(list, word);
listclock = clock() - listclock;
listtime = listtime + listclock;
tableclock = clock();
table = inserttable(table, word);
tableclock = clock() - tableclock;
tabletime = tabletime + tableclock;
リスト挿入関数が呼び出されている2行目をコメントアウトすると、tabletimeとtableclockの値は0と0.03になります。
挿入可能な行をコメントアウトすると、次の値が得られます:6.34sおよび0.02s
両方を実行させると、次の値が得られます:12.39sと0.04s
ハッシュテーブル関数も実行しているときに、テーブル関数の実行時間が2倍になる理由はありますか?
Insertlist関数:(挿入可能な関数はこれを呼び出します):
List *insertlist(List *list, char word[30]) {
List *templist = list;
while(templist != NULL) {
if(strcmp(templist->word, word) == 0) {
templist->count++;
list = addnode(list, word);
list->count = templist->count;
break;
}
templist = templist->next;
}
if(templist == NULL) {
list = addnode(list, word);
}
return list;
}