while循环总是提前结束一个循环

时间:2014-02-11 01:44:31

标签: c++ linked-list

这里似乎发生的事情是我的while循环每次都会提前结束1循环。它被设置为保持运行直到t-> next为NULL。虽然它总是提前停止,即使 - >下一个指针确实指向某个东西。这是代码。我在代码的其他部分完成了所有正式声明和其他操作,所以我不会在这里发布它们以保持简单

int job_allocated(const int job)
{
  ALLOCPTR t = alloclist;


  int sizeofjob = 0;


  while(t->next!=NULL)
  {

    if(t->id==job)
    {

        sizeofjob=sizeofjob+t->size;
    }

    cout << t << endl;
    cout << t->id << endl;
    cout << t->next << endl;
    t=t->next;

}

这是输出

0x600010540
2
0x600010520
0x600010520
3
0x600010500
0x600010500
2
0x6000104e0

正如你所看到的那样 - &gt;下一个指针确实指向内存,但由于某种原因,while循环会在之后结束,而不是再运行一次。

在我的main我已经分配了4个作业,但循环不会转到最后一个。

1 个答案:

答案 0 :(得分:7)

应该是while (t != NULL)。如果您编写while (t->text != NULL),那么您都会为空列表打开未定义的行为,并导致循环在t指向最后一个节点时不处理t(请记住,如果{{ 1}}指向最后一个节点,然后tt->next,循环将不会运行。