I have made program for an adjancy list. First column is dynamically allocated and it's next nodes are allocated through linked list. I am not getting proper output.Pls help
Code:
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
struct node
{
int info;
struct node *next;
}*temp;
struct fcol
{
int info;
struct node *next;
}*firstcol;
void createlist(int*,int);
int main()
{
int *a,num,i,j;
clrscr();
printf("Enter the number of nodes...");
scanf("%d",&num);
a=(int *)malloc(num*num*sizeof(int));
printf("Enter the adjacency matrix....");
for(i=0;i<=num-1;i++)
{
for(j=0;j<=num-1;j++)
scanf("%d",&a[i*num+j]);
}
createlist(a,num);
for(i=0;i<=num-1;i++)
{
printf("node%d",firstcol[i].info);
for(temp=firstcol[i].next;temp!=NULL;temp=temp->next)
printf("->node%d",temp->info);
printf("\n");
}
getch();
return(0);
}
void createlist(int a[],int num)
{
int *row,i,j;
temp=NULL;
firstcol=NULL;
//allocates 1d array for first col
firstcol=(struct fcol*)malloc(num*sizeof(struct fcol));
for(i=0;i<=num-1;i++)
{
firstcol[i].info=i+1;
firstcol[i].next=NULL;
}
for(i=0;i<=num-1;i++)
{
for(j=0;j<=num-1;j++)
{
if(a[i*num+j]==1)
{
temp=firstcol[i].next;
while(temp->next!=NULL)
temp=temp->next;
temp->next=(struct node*)malloc(sizeof(struct node));
temp=temp->next;
temp->info=j+1;
printf("\t%d",temp->info);
temp->next=NULL;
}
}
}
}