我的链表有问题。我相信这是正确的,但当我在中添加项目时,我查看了指针的地址,多个指针将指向相同的“结构”。以下是输出的示例:
第一列是名称,第二列是当我实际将项目放入列表中时(当计数器等于该数字时),但它们应该按第三列排序。第四列是结构的地址,第五列是下一个指针的地址。正如你所看到的,A2和A4都指向A3,A1的next是null,但是我没有指向A2的指针,这导致了我的问题。A4应指向A2,A2应指向A3,A3应指向A1。任何帮助都将不胜感激,我已经被困在这里好几个小时了。如果需要更多的解释或代码,请让我知道。
发布于 2011-11-05 08:23:02
我不知道它是否与您的问题有关,但在循环中,不要检查current->next != NULL。该条件意味着您永远不会向列表的末尾添加任何节点。相反,首先添加一个条件current != NULL。如下所示:
while( (current != NULL ) && ( current->timeNeeded < new_process->timeNeeded ) ){
temp = current;
current = current->next;
}发布于 2011-11-05 08:38:49
不确定是否是原因,但是当列表中有一个timeNeeded为X的项目,而您添加了第二个timeNeeded为X的项目时,似乎会出现问题。
在if之后,您知道head不是空的,并且传入节点的timeNeeded不小于head。循环的第一次迭代再次查看head。如果头部和传入节点的timeNeeded值相等,则循环将永远不会运行,从而为您提供指向头部的临时和电流。
在这一点上,您的逻辑基本上是“在传入的旁边设置head->,在头部旁边设置incoming >”。
你没有在你的原始帖子中列出你的timeNeeded值,所以它可能是无关的,但可能是一些值得查看的东西?(例如,将"<=“或">=”放在其中的某个位置,以捕捉两个节点列表的情况)
https://stackoverflow.com/questions/8017175
复制相似问题