C++ 链表中最后一项之后的项的值是否为0?
我正在为家庭作业编写一个快速排序算法,但我想知道我的循环是否会过早停止。while循环将经过最后一个元素并停止,还是继续读取内存中剩余的随机数?这有意义吗C++ 链表中最后一项之后的项的值是否为0?,c++,linked-list,quicksort,C++,Linked List,Quicksort,我正在为家庭作业编写一个快速排序算法,但我想知道我的循环是否会过早停止。while循环将经过最后一个元素并停止,还是继续读取内存中剩余的随机数?这有意义吗 void ListP::partition(ListNode * &Larger, ListNode * &Smaller, ListNode * &pivot ){ ListNode *curr, *temps, *templ; *temps= *templ = NULL; curr=pivot-&g
void ListP::partition(ListNode * &Larger, ListNode * &Smaller, ListNode * &pivot ){
ListNode *curr, *temps, *templ; *temps= *templ = NULL;
curr=pivot->next;
pivot->next=NUll;
while(curr!=NULL){
if (curr->item<=pivot->item){
if(Smaller==NULL){
Smaller=curr;
curr=curr->next;
Smaller->next=NULL;
temps=Smaller;
}
else{
temps->next=curr;
curr=curr->next;
temps=temps->next;
temps->next=NUll;
}
}
else{
if(Larger==NULL){
Larger=curr;
curr=curr->next;
Larger->next=NULL;
templ=Larger;
}
else{
templ->next=curr;
curr=curr->next;
templ=templ->next;
templ->next=NUll;
}
}
}
}
链表中最后一项之后的项的值是否为0
根据定义,最后一项之后没有任何项。如果在最后一项之后有一项,那么之前的一项将不是最后一项
我想知道我的循环是否会过早停止。
while循环是否会经过最后一个元素
快速浏览一下,循环的所有分支都执行curr=curr->next,循环结束条件为curr=NULL,因此循环将在下一个为NULL的节点之后结束。如果列表中最后一个节点的下一个节点指向null,则循环不应超过它。最后一项之前的下一个节点不能指向null,因此循环也不应过早结束
但是,如果列表最后一项的下一项没有指向null,则循环不会在该节点上结束
您应该使用调试器来验证程序的行为是否与您期望的一样。*temps=*temp=NULL;->我很困惑。这条线应该做什么?ListP是什么?此外,我不认为temp会是NULL以外的任何东西。它以NULL开头,您唯一分配给它的时间是当您给它较大的值时,但只有当较大的值为NULL时才会发生这种情况!根据定义,最后一个项目之后的项目可能没有此类项目。否则,您认为是最后一项的内容将不会是最后一项。@scohe001-*temp被指定为NULL,这可能已经是一个bug。templ直到稍后才初始化。我们不知道调用方传递的大的值。这不是标准的C++列表类,所以你最好是问作者,尽管我怀疑任何明智的链表都会设置最后->下一个Null pTR。