То, что, кажется, происходит здесь, заключается в том, что мой цикл 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
Как вы можете see -> next pointer действительно указывает на память, но по какой-то причине цикл while заканчивается сразу, а не запускается еще раз.
В моем main
У меня есть 4 вакансий, которые я выделил, но цикл не перейдет к последнему.
Поскольку вы, кажется, хотите идти до тех пор, пока * и не включите *, последний узел в списке, есть какая-то особая причина, по которой вы не используете 'while (t! = NULL)' (который по совпадению также предотвращает начальную нулевое разыменование в пустом списке)? Если ваш ответ «потому что я нажимаю начальный узел дозорного, мне нужно игнорировать», * не *. Значение «NULL» - прекрасный дозор, который гласит: «Я пуст». – WhozCraig