-3
#include<stdio.h>
#include<conio.h>
#include<malloc.h>

void main()
{
    struct node
    {
        int data;
        struct node *next;
    };
    struct node *head,*temp;
    int x;
    clrscr();
    head=(struct node *) malloc (sizeof(struct node));
    temp=head;
    while(temp!=NULL)
    {
        scanf("%d",x);
        temp->data=x;
        if(x==0)
        {temp->next=NULL;}
        else
        {temp->next=(struct node *) malloc (sizeof(struct node));}
        temp=temp->next;
    }
}

我正在为一个简单的链接列表程序编写代码......我可以成功运行该程序,但是当我按 0 时,程序并没有停止......

4

1 回答 1

5

首先,你的 scanf 是错误的。它需要通过引用传递:

scanf("%d", &x);

其次,您应该在扫描之前将 x 设置为 0 以外的值,以防万一。它的编写方式是循环中没有退出条件。

如果您想直接进入它,您可以尝试使用 gdb 并逐行执行它。

希望这可以帮助

于 2013-08-15T15:02:26.957 回答