gpt4 book ai didi

c - 按行排序

转载 作者:行者123 更新时间:2023-11-30 17:54:12 25 4
gpt4 key购买 nike

如果有人可以帮助我找到哪里出错了,我已经研究这段代码很长时间了,但无法得到正确的结果。它需要通过传递 *head 作为头指针来对链表进行排序。该函数的输出应该是按升序排序的相同链表,使得头节点将是链表中的最小值。列表。

void sortByCount (struct lnode** head) {

struct lnode* temp= (*head);
struct lnode* temp2 = (*head);

int i;
int j;
int counter = 0;
while(temp != NULL)
{
temp = nodeGetNext(temp);
counter++;
}
for( i = 1; i<counter; i++)
{
temp2=(*head);
bool flag = false;
for(j = 1; j<counter-i+1;j++)
{
if(countCmp(temp2,nodeGetNext(temp2))>0)
{
swap(head,temp2,nodeGetNext(temp2));
}
if(countCmp(temp2,nodeGetNext(temp2))== 0 && (wordCmp(temp2,nodeGetNext(temp2))>0))
{
swap(head,temp2,nodeGetNext(temp2));
flag = true;
//continue;
}
}
temp2 = nodeGetNext(temp2);
}
}

最佳答案

问题出在循环的这一部分:

        if(countCmp(temp2,nodeGetNext(temp2))>0)
{
swap(head,temp2,nodeGetNext(temp2));
}
if(countCmp(temp2,nodeGetNext(temp2))== 0
&& (wordCmp(temp2,nodeGetNext(temp2))>0))
{
swap(head,temp2,nodeGetNext(temp2));
flag = true;
//continue;
}

如果您决定冒泡并交换,那么第二个 if 检查可能会选择再次冒泡(由于交换已经发生,下一个 temp2 将已改变)。这可能不是您想要的。相反,您可能打算仅在第一个 if 检查失败时才执行第二个 if 检查。这通常是通过在 if 语句中添加 else 来完成的。

关于c - 按行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15076121/

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