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);
}