C 未打印链接列表的最后一个节点值

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);

我试图遍历一个链表,并使用node显示每个节点的值。我在这里使用while循环。但问题是链表的最后一个元素没有被打印。我必须单独打印最后一个元素

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。或者可能将预减量更改为后减量。