在下面的链表创建程序中,输入后,程序停止工作。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,并将在执行此复合语句后删除。