C связанный список; максимальная частота узла в списке - PullRequest
0 голосов
/ 18 апреля 2020

Struct: n представляет данные узла, f - частота узла, а next - указатель на следующий узел. Я написал рекурсивную функцию, которая добавляет узлы в конце связанного списка. Я должен написать функцию, которая подсчитывает количество вхождений узлов и находит узел с наибольшей частотой.

struct node
{
int n;
int f;
struct node* next;
};

Функция рекурсивного добавления:

void add(struct node** hPtr, int n)
{

if(*hPtr==NULL) {
    struct node* new_node = malloc(sizeof(struct node));
    new_node->n=n;
    new_node->f=0; 
    new_node->next=NULL;
    *hPtr = new_node;
}
else{
    add(&((*hPtr)->next),n);
}
}

Функция печати:

void print(struct node* head)
{
if (head==NULL) return;
while(head!=NULL){
    printf("%d (%d)->",head->n,head->f);
    head = head->next;
}
}

Функция, которая считает f узлов, которая не работает:

void count(struct node* head)
{
if (head==NULL) return;
struct node* temp = head;
while(head!=NULL)
{
    if (head->n == temp->n){
        head->f++;
        temp=temp->next;
    } else temp=temp->next;
}

return count(head->next);
}
...