链表创建 - 程序在获取输入后停止工作

时间:2014-10-12 11:31:14

标签: c linked-list

在以下链表创建程序中,输入后程序停止工作。 printf("\n nodes entered are:\n)之后的代码未运行。

if in for循环用于创建head或start节点。

#include<stdio.h>
#include<conio.h>
#include<malloc.h>
    //creating a linked list
    typedef struct node
    {
    int data;
    struct node *link;
    }node;

int main()
{

    int i,n;
    node* temp;
    node* start=0;

    printf("Enter the no of elements in the linked list\n");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        if(i==0)                                                                //for first node
        {
        node* start=(node*)malloc(sizeof(node));
        scanf("%d",&(start->data));
        start->link=NULL;
        temp=start;
        }
        else
        {
            node *nextnode=(node *)malloc(sizeof(node));
            scanf("%d",&(nextnode->data));
            temp->link=nextnode;
            nextnode->link=NULL;
            temp=nextnode;                                                      //updating temp for next iteration
        }
    }
    printf("\n nodes entered are:\n");
    temp=start;
    while(temp->link!=NULL)
    {
            printf("%d ",temp->data);
            temp=temp->link;
    }

printf("%d",temp->data);
getch();
return 0;
}

1 个答案:

答案 0 :(得分:2)

更改此代码段

    if(i==0)                                                                //for first node
    {
    node* start=(node*)malloc(sizeof(node));

    if(i==0)                                                                //for first node
    {
         start=(node*)malloc(sizeof(node));

否则在if语句的复合语句中,您声明局部变量start,它隐藏先前声明的变量start,并且在执行此复合语句后将被删除。