我编写了以下函数,它返回链表的中间元素,它使用双指针方法
struct node
{
int data;
struct node *next;
}*start;
void middleelement()
{
struct node *x=start,*y=start;
int n=0;
if(start==NULL)
{
printf("\nThere are no elments in the list");
}
else
{
while((x->next)!=NULL)
{
x=x->next->next;
y=y->next;
n++;
}
printf("\nMiddle element is %d",y->data);
}
}
但是,每当我运行这些函数时,Windows 资源管理器就会停止工作 代码中的缺陷是什么?有没有比这更好的算法来找到中间元素?