2017-04-09 45 views
-1

节目里我试图遍历单链表,得到错误,好像做,while循环不正确应用,请错误(Id)的返回1个退出状态

该方案低于在哪里我试着用while和pointers来遍历。

#include<stdio.h> 
#include<stdlib.h> 

int main() 
{ 
    char ch; 
    struct node 
    { 
     int info; 
     struct node *next; 
    }; 
    typedef struct node node; 
    node *start, *ptr, *ne; 
    ptr=NULL; 
    int count=0; 
    do 
    { 
    ne=(node*) malloc(sizeof(node)); 
    printf("\nEnter Data: "); 
    scanf("%d",&ne->info); 
    if(ptr!=NULL) 
    { 
    ptr->next=ne; 
    ptr=ptr->next; 
    } 
    else { 
    start=ne; 
    ptr=ne; 
    } 
    printf("\nDo you wish to continue?\n "); 
    scanf("%c",&ch); 
     }while(ch=='y'|| ch=='Y'); 
     ptr->next=NULL; 
     printf("The linked list is: "); 
     ptr=start; 
     while(ptr!=NULL) 
     { 
     printf("\t%d",&ptr->info); 
     ptr=ptr->next; 
     count++; 
     } 
     printf("\nTotal number of elements: %d",count); 
    return(0);  


} 
+0

如果链接器返回一个错误(您没有复制到该文章中),那么您的程序将无法运行。所以问题不在于“应用”循环。 – StoryTeller

+0

当询问构建错误时,* always *在问题主体中包含* complete *错误输出。完整,包括可能的信息说明,无需编辑,*作为(复制粘贴)文本*。 –

回答

0

变化

printf("\t%d",&ptr->info); 

printf("\t%d",ptr->info); 

而且我不建议在typedef struct node node; 使用相同的名称 “节点”,但它仍然不是一个问题。

编辑:

我也发现你的代码的问题:

变化

printf("\nDo you wish to continue?\n "); 
scanf("%c",&ch); 

printf("\nDo you wish to continue?\n "); 
getchar(); 
scanf("%c",&ch); 

或者

你也可以将其更改为

printf("\nDo you wish to continue?\n "); 
scanf(" %c",&ch); //add a space before %c 

为什么这是造成错误?

在程序中,当您尝试使用'printf()'打印任何内容时,空白空间留在缓冲区中,因此我们必须读取它并忽略,否则ch将被分配空白空间。要阅读空白并忽略我们有两个选项,如上所述。尝试任何一个。

+0

仍然不工作 –

+0

即使它工作,它不会让我输入更多的数字,我键入一个数字,它显示摘要 –

+0

@AyushShrivastava检查我的编辑,如果它的工作做一个赞许..: - ) – Arvindsinc2

相关问题