C 未打印链接列表的最后一个节点值
我试图遍历一个链表,并使用node显示每个节点的值。我在这里使用while循环。但问题是链表的最后一个元素没有被打印。我必须单独打印最后一个元素C 未打印链接列表的最后一个节点值,c,linked-list,C,Linked List,我试图遍历一个链表,并使用node显示每个节点的值。我在这里使用while循环。但问题是链表的最后一个元素没有被打印。我必须单独打印最后一个元素 int print(){ printf("\ncurrent list is \n"); struct Node* showList; showList=head; while(showList->next !=NULL){ printf("%d ",showList->data);
int print(){
printf("\ncurrent list is \n");
struct Node* showList;
showList=head;
while(showList->next !=NULL){
printf("%d ",showList->data);
showList=showList->next;
}
printf("%d",showList->data); // it prints the last element
printf("\n");
}
您可以将条件更改为:
while(showList != NULL)
然后您的while
将不会跳过最后一个节点。它将跳过当前状态下的最后一个节点,因为很明显,当您处于最后一个节点时,showList->next==NULL
,即使该节点包含值,循环也不会执行
编辑:确保更改后删除了此行,否则会出现问题:
printf("%d",showList->data); // it prints the last element
或者,您可以使用
for
循环:
for(showList = head; showList != NULL; showList = showList->next)
printf("%d ",showList->data);
您可以将条件更改为:
while(showList != NULL)
然后您的while
将不会跳过最后一个节点。它将跳过当前状态下的最后一个节点,因为很明显,当您处于最后一个节点时,showList->next==NULL
,即使该节点包含值,循环也不会执行
编辑:确保更改后删除了此行,否则会出现问题:
printf("%d",showList->data); // it prints the last element
或者,您可以使用
for
循环:
for(showList = head; showList != NULL; showList = showList->next)
printf("%d ",showList->data);
可能列表中的最后一个节点已将
next
设置为NULL
。这对于链表实现来说是典型的
如果在您的实现中是这种情况,则while
循环的条件在最后一个节点上失败。换句话说,当showList
是最后一个节点时,(showList->next!=NULL)
的计算结果为false
要确保打印最后一个节点,请更改正在测试的条件。例如,您可以简单地测试
showList
是否为非空。假设列表中的最后一个节点将next
设置为null
。这对于链表实现来说是典型的
如果在您的实现中是这种情况,则while
循环的条件在最后一个节点上失败。换句话说,当showList
是最后一个节点时,(showList->next!=NULL)
的计算结果为false
要确保打印最后一个节点,请更改正在测试的条件。例如,您可以简单地测试showList
是否为非null。您可以使用while(showList!=null)
根据您的条件,它不会进入最后一个元素的while循环您可以使用while(showlist!=NULL)
showList->next !=NULL
根据您的条件,它不会进入最后一个元素的while循环
showList->next !=NULL
此条件适用于循环
在while循环中,您应该使用showList=NULL
因为在退出while循环后,while循环中的showList指向NULL
此条件适用于循环
在while循环中,您应该使用
showList=NULL
因为在退出while循环后,while循环showList指向NULL
是的最后一个节点->下一个设置为NULL..我如何解决这个问题?是的最后一个节点->下一个设置为NULL..我如何解决这个问题?这会使程序崩溃..它不起作用。我很早就尝试过了我不明白为什么它会使程序崩溃。。。也许会公布错误?或者在更改后显示修改后的代码,以确保没有添加一些不需要的更改@阿尔·扎米看到我的编辑索引出了一个错误?数组中的第一项为0,第N项为N-1。或者可能将预减量更改为后减量。这会使程序崩溃。它不起作用。我早些时候尝试过,我不明白为什么它会使程序崩溃。。。也许会公布错误?或者在更改后显示修改后的代码,以确保没有添加一些不需要的更改@阿尔·扎米看到我的编辑索引出了一个错误?数组中的第一项为0,第N项为N-1。或者可能将预减量更改为后减量。