gpt4 book ai didi

c - 单链表无法正确添加到开头

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

我正在尝试将学生记录 (SREC) 排序到单链接列表中。这里的记录比较是按学生的姓氏进行的。下面的代码可以正确比较,但是当它将新记录放置在列表的开头时,它会覆盖第二条记录。也就是说,第二条记录稍后会打印为完全相同的记录。

帮忙?提前致谢!

/*Insert and sort new SREC into each list*/
if(insert != NULL)
{
insert -> next = NULL;

prev = NULL;
current = listStart;


while(current != NULL && strcmp(insert->lname, current->lname) > 0)
{
prev = current;
current = current -> next;
}

if(prev == NULL) /*This is to place the new record at the start of the list*/
{
insert -> next = listStart;
listStart = insert;
}
else
{
prev -> next = insert;
insert -> next = current;
}
}
else
{
printf("Insertion failed\n");
}

return listStart;

最佳答案

比较是相反的:

strcmp(insert->lname, current->lname) > 0

应该是:

strcmp(insert->lname, current->lname) < 0

或者:

strcmp(current->lname, insert->lname) > 0

举个例子,如果current->lname“b”并且insert->lname“a”strcmp 将执行 'a' - 'b'(结果:-1)。由于您正在测试相反的条件,因此 insert 位于 current 之后。

关于c - 单链表无法正确添加到开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23279075/

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