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



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

if-in-for循环用于创建头节点或起始节点。

#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 listn");
    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;
}

更改此代码段

    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,并将在执行此复合语句后删除。

相关内容

  • 没有找到相关文章

最新更新