ダブルポインターメソッドを使用する、リンクされたリストの中間要素を返す次の関数を作成しました
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 エクスプローラーが動作しなく なります。コードの欠陥は何ですか? 中間要素を見つけるために、これよりも優れたアルゴリズムはありますか?