我有这个代码来打印链接列表[1,2,3]
void reverse(struct node *ptr){
head = ptr;
while(ptr!=NULL){
printf("%d--->",ptr->data);
ptr=ptr->next;
}
}
输出:
1-->2-->3
我试图打印ptr(当前节点)的下一个元素
void reverse(struct node *ptr){
head = ptr;
while(ptr!=NULL){
printf("%d--->",ptr->data);
ptr=ptr->next;
printf("%d--->",ptr->data);
}
}
为什么不打印1-->2-->2-->3-->3?
最佳答案
你可能想改变这个
ptr=ptr->next;
printf("%d--->",ptr->data);
变成
ptr=ptr->next;
if (NULL != ptr)
printf("%d--->",ptr->data);
在最后一次迭代中,程序试图取消引用
NULL
,这将导致未定义的行为,进而极有可能导致程序崩溃。当
stdout
被行缓冲时,填充1-->2-->2-->3
的缓冲区将不再被刷新和打印。你可能有机会通过添加
flush(stdout);
每次呼叫
print()
后。关于c - 打印链表当前节点的下一个元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18343270/