gpt4 book ai didi

c - 从链表中排序元素

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:13 25 4
gpt4 key购买 nike

void sortlist()
{
struct node *a;
struct node *temp=head;

struct node *temp1=head->next;

while(temp!=NULL)
{
while(temp1->next!=NULL)
{
if(temp->data > temp1->data)
{
a->data=temp->data;
temp->data=temp1->data;
temp1->data=a->data;
}
else
{
temp1=temp1->next;
}
}
temp=temp->next;
}
}

//我是数据结构的新手。我在尝试对链表的元素进行排序时遇到了一些问题。列表没有得到排序。非常感谢任何帮助。

最佳答案

a 是一个未初始化的指针,所以行

a->data=temp->data;

调用未定义的行为。崩溃是这里最有可能的结果,因为您将尝试在一个未定义的地址写入内存,您的代码可能无法写入该地址,或者可能正在被您的程序的另一部分使用。

您可以通过为 a 提供与 temp->data 相同的类型来解决此问题。

void sortlist()
{
int a; // change type to match node->data if required
...
if(temp->data > temp1->data)
{
a=temp->data;
temp->data=temp1->data;
temp1->data=a
}
...
}

编辑:while(temp1->next!=NULL) 行中也存在潜在的 NULL 取消引用崩溃。下面的代码显示了 sortlist 的潜在实现,它避免了这种情况。

void sortlist()
{
struct node *ptr=head;
while(ptr!=NULL) {
struct node *next;
if (ptr == NULL)
return;
next = ptr->next;
while(next!=NULL) {
if(ptr->data > next->data) {
int a=ptr->data;
ptr->data=next->data;
next->data=a;
}
next = next->next;
}
ptr=ptr->next;
}
}

关于c - 从链表中排序元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17815939/

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