私はこんなに過ごした日に詰まっています。私はCを使って単語の周波数プログラムを作成する必要があります。衝突を追跡するために、私はリンクされたリストを使用しますが、私のコードは正しい周波数を与えません(例えば、 "the"のfrequncyは25でなければなりません。私は間違って何をしていますか?ここに私のコードです:Cのプログラミングとリンクされたリストを使用しているが、頻度カウントが間違っている単語の頻度が
void addToArr(char *str, HASH_ARR_ELEM hashArr[]){
int homeAddress = 0;
int addResult = 0;
WORD *tempWord;
homeAddress = hashFunct(str);
if(!(tempWord = (WORD*)malloc(sizeof(WORD))))
printf("Memory Allocation Error\n"),
exit(100);
strcpy(tempWord->str,str);
tempWord->count = 1;
if(hashArr[homeAddress].wordPtr == NULL){
// allocate memory
if(!(hashArr[homeAddress].wordPtr = (WORD*)malloc(sizeof(WORD))))
printf("Memory Allocation Error\n"), exit(100);
strcpy(hashArr[homeAddress].wordPtr->str,tempWord->str);
hashArr[homeAddress].wordPtr->count = 1;
} else if(hashArr[homeAddress].wordPtr != NULL && hashArr[homeAddress].headPtr == NULL){
if(strcmp(hashArr[homeAddress].wordPtr->str,tempWord->str))
hashArr[homeAddress].wordPtr->count++;
else{
hashArr[homeAddress].headPtr = createList(cmpWord);
if(!hashArr[homeAddress].headPtr)
printf("\aCannot create list\n"),
exit(100);
addNode(hashArr[homeAddress].headPtr,tempWord);
}
}else
if(strcmp(hashArr[homeAddress].wordPtr->str,tempWord->str))
hashArr[homeAddress].wordPtr->count++;
else
{
addResult = addNode(hashArr[homeAddress].headPtr,tempWord);
if(addResult != 0)
if(addResult == -1)
printf("Memory Overflow adding node\n"),
exit(120);
else
{
retrieveNode(hashArr[homeAddress].headPtr,tempWord,(void**)&tempWord);
tempWord->count++;
printf("%s %d\n\n", tempWord->str, tempWord->count);
}
}
} // end addToArr
問題が解決しました。あなたに感謝した問題 – TheMadKoder