C 有序链表出现故障

C 有序链表出现故障,c,linked-list,C,Linked List,我的链接列表有问题。我相信这是正确的,但当我在中添加项时,我已经查看了指针的地址,多个指针将指向同一个“struct”。下面是一个输出示例: 第一列是名称,第二列是我实际将项目放入列表时(当计数器等于该数字时),但它们应该按第三列排序。第四列是结构的地址,第五列是下一个指针的地址。正如您所看到的,A2和A4都指向A3,A1的next为null,但我没有指向A2的指针,这导致了我的问题。A4应指向A2,A2指向A3,A3指向A1。任何帮助都将不胜感激,我已经被困在这里好几个小时了。如果需要更多的解

我的链接列表有问题。我相信这是正确的,但当我在中添加项时,我已经查看了指针的地址,多个指针将指向同一个“struct”。下面是一个输出示例:


第一列是名称,第二列是我实际将项目放入列表时(当计数器等于该数字时),但它们应该按第三列排序。第四列是结构的地址,第五列是下一个指针的地址。正如您所看到的,A2和A4都指向A3,A1的next为null,但我没有指向A2的指针,这导致了我的问题。A4应指向A2,A2指向A3,A3指向A1。任何帮助都将不胜感激,我已经被困在这里好几个小时了。如果需要更多的解释或代码,请告诉我。

我不知道这是否与您的问题有关,但在循环中,不要选中
current->next!=空
。该条件意味着您永远不会将任何节点添加到列表的末尾。而是添加一个条件
current!=首先为空。像这样:

while( (current != NULL ) && ( current->timeNeeded < new_process->timeNeeded ) ){
    temp = current;
    current = current->next;
}
while((当前!=NULL)&&(当前->所需时间所需时间)){
温度=电流;
当前=当前->下一步;
}

不确定这是否是原因,但如果列表中有一个项的timeNeeded为X,而您添加了第二个项的timeNeeded为X,则您可能会遇到问题

在if之后,您知道head不为NULL,并且传入节点所需的时间不小于head。循环的第一次迭代是再次查看头部。如果head和传入节点的timerequired值相等,则循环将永远不会运行,从而为您提供指向head的temp和current

从这一点来看,您的逻辑基本上是“设置头部->靠近传入对象,并设置传入->靠近头部”


你在最初的帖子中没有列出你的时间需求值,所以这可能是无关的,但可能是值得一看的?(例如,在其中的某个位置放置“=”以捕获两个节点的列表大小写)

似乎没有必要将指针传递给指向头部的指针。如果新项目位于列表的末尾,会发生什么情况?您没有将最后一项的旁边设置为NULL。。。有几个问题,首先创建一个添加到末尾的
list\u add
函数,然后添加顺序可能会有所帮助。我也在看截图。是的,截图是不必要的,但我很无聊。关于最后的空值,我已经考虑过了,但是我必须在某个时间插入它们,当我得到数据时,所有数据都从文件中读取,我立即将next设置为空值。但是,当添加另一个数字时,列表会重新排序,也就是当NULL出现问题时。我在处理它一段时间后忘记将其更改回去,感谢您指出。啊,“应该按第三列排序”意味着这些是您所需的时间值。尽管如此,可能还是有用的?想想看,只要传入节点和头具有相同的TimeRequired值,这个(想象中的)问题就可能存在——不仅仅在2节点列表中。是的,这是一个很好的建议,虽然它没有解决我当前的问题,但我可能最终会遇到它。