gpt4 book ai didi

c - 使用双指针方法查找链表中的中间元素

转载 作者:行者123 更新时间:2023-12-02 02:14:01 26 4
gpt4 key购买 nike

我写了下面这个返回链表中间元素的函数,它使用了双指针方法

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 资源管理器都会停止工作代码中的缺陷是什么?有没有比这更好的算法来找到中间元素?

最佳答案

如果条目数是奇数,您的x 最终将是NULL,因此当下一个循环迭代引用它时,您的程序将崩溃。您应该修改您的条件以说明这一点:

while(x && x->next) {
...
}

NULL比较在C语言中是可选的,所以可以跳过!= NULL来缩短条件。

当然,至少可以说,通过全局变量传递 start 参数是非正统的。将其作为常规函数参数传递会更好。

关于c - 使用双指针方法查找链表中的中间元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11473879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com