The code shows segmentation fault just after first pair of input (x,y). Help needed!!
#include <stdio.h>
struct points
{
int x,y;
struct points *next;
};
struct points *head=NULL;
void insert (struct points *temp)
{
struct points *tem=head,*prev=head;
if (head==NULL)
head=temp;
else
{
while (tem!=NULL)
{
if (tem->x<temp->x)
{
prev=tem;
tem=tem->next;
}
else if (tem->x==temp->x)
{
while (tem->x==temp->x)
{
if ((tem->y)<(temp->y))
{
prev=tem;
tem=tem->next;
}
else if (tem->y==temp->y)
return;
else
{
//flag=1;
break;
}
}
temp->next=prev->next;
prev->next=temp;
return;
}
else
break;
}
temp->next=prev->next;
prev->next=temp;
return;
}
}
void print (int i)
{
if (i==1)
printf("After 1st insertion:");
else if (i==3)
printf("After 2nd insertion:");
else if (i==3)
printf("After 3rd insertion:");
else
printf("After %dth insertion:",i);
struct points *tem=head;
while (tem!=NULL)
{
printf("%d,%d",tem->x,tem->y);
tem=tem->next;
if (tem!=NULL)
printf("->");
}
}
int main()
{
int x,y,i=0;
scanf("%d %d",&x,&y);
i++;
while (x!=0 && y!=0)
{
struct points *temp;
temp->x=x;
temp->y=y;
temp->next=NULL;
insert(temp);
print(i);
scanf("%d %d",&x,&y);
i++;
}
}