C++ 链表中最后一项之后的项的值是否为0?

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

我正在为家庭作业编写一个快速排序算法,但我想知道我的循环是否会过早停止。while循环将经过最后一个元素并停止,还是继续读取内存中剩余的随机数?这有意义吗

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。