有序链表出现故障

时间:2011-11-05 00:11:44

标签: c linked-list

我的链表出现问题。我相信它是正确的,但是当我添加项目时,我已经查看了指针的地址,多个指针将指向相同的“结构”。以下是输出的示例:

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

2 个答案:

答案 0 :(得分:1)

我不知道它是否与您的问题有关,但在循环中,请不要检查current->next != NULL。这种情况意味着您永远不会将任何节点添加到列表的末尾。而是首先添加条件current != NULL。像这样:

while( (current != NULL ) && ( current->timeNeeded < new_process->timeNeeded ) ){
    temp = current;
    current = current->next;
}

答案 1 :(得分:0)

不确定是否是原因,但是如果列表中的一个项目的timeNeeded为X,并且您添加了第二个项目,其中timeNeeded为X,那么您似乎会遇到问题。

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

从那时起,你的逻辑基本上会在传入的旁边显示“set head-&gt;”,并在头部旁边设置incoming-&gt;。

您没有在原始帖子中列出您的timeNeeded值,因此它可能不相关,但可能需要注意一些事项? (例如,在某处放置一个“&lt; =”或“&gt; =”以捕获两个节点列表的情况)