Реализация односвязного списка для подсчета количества узлов в связанном списке. Я написал код для подсчета количества узлов в односвязном списке, он рассчитывается правильно, но в противном случае оператор части выполняется 3 раза, если я использую глобальную переменную count, то же самое происходит. почему так? Я использую редактор блоков кода, и я получаю вывод вышеупомянутого. Я не понимаю, почему еще часть исполняется три раза. Пожалуйста, помогите решить эту проблему.
#include<stdio.h>
#include<stdlib.h>
struct data
{
int i;
struct data *next;
};
//int count;
struct data *head=NULL;
void insert(int d)
{
struct data *p;
if(head==NULL)
{
p=(struct data*)malloc(sizeof(struct data));
p->i=d;
p->next=NULL;
head=p;
}
else
{
p=(struct data*)malloc(sizeof(struct data));
struct data *temp;
temp=head;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=p;
p->i=d;
p->next=NULL;
}
}
void disp(struct data *temp)
{
if(temp==NULL)
{
return;
}
else
{
// printf("%d ",temp->i);//prints in forward direction
disp(temp->next);
printf("%d ",temp->i);//prints in reverse direction
}
}
void countL(struct data *c)
{
static int count;
if(c==NULL)
{
return;
}
else
{
count++;
countL(c->next);
}
printf("\n");
if(count==0)
{
printf("List is empty\n");
}
else
{
printf("Number of nodes in the linked list are:%d\n",count);
}
}
int main()
{
insert(1);
insert(2);
insert(3);
disp(head);
countL(head);
}
Вывод:
3 2 1
Number of nodes in the linked list are:3
Number of nodes in the linked list are:3
Number of nodes in the linked list are:3
Я написал код для подсчета количества узлов в односвязном списке, он считается правильно, но в остальномОператор part выполняется 3 раза, если я использую глобальную переменную count, то же самое происходит. почему так? Я использую редактор блоков кода и получаю вывод, упомянутый выше.