0

私はこの構造体を持っています:

typedef struct data student, *pstudent;


struct data{
    char name[50];
    int value;
   pstudent next;
};

そして、並べ替えられていないリンクされたリストで最も頻繁に生徒を見つける関数が必要です。例: "John - 値 3" "David - 値 2" "Andrew - 値 4" "John - 値 9" この場合、関数は "John" を返します。

これまでのコード:

void count(pstudent p)
{
    pstudent ptr1, ptr2;
    ptr1 = p;

   while(ptr1 != NULL && ptr1->next!=NULL)
   {
        ptr2 = ptr1;

        while(ptr2->next != NULL)
        {
            if(strcmp(ptr1->name,ptr2->next->name)==0)
            {
                printf("Found %s, %s", ptr1->name,ptr2->name);
            }
        }
        ptr1 = ptr1->next;
     }
    }

どうすればこれを機能させることができますか?助けてくれてありがとう。

4

2 に答える 2

1

これを行う 1 つの方法は、キー変換またはハッシュ関数を使用することです。名前にハッシュを使用し、ハッシュ値が一致する場合は、その名前のカウントを 1 増やします。カウントが最も高いものを返します。

于 2013-06-23T14:18:14.893 に答える