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;
    }
  }
}
}