i got this code, but i do not understand how to get rid of the error occurring at the malloc function.
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<stdlib.h>
int initial[9]={2,8,3,1,6,4,7,0,5}; int final[9]={1,2,3,4,5,6,7,8,0};
int moves[9][4]={
{1,3,-1,-1},
{0,2,4,-1},
{1,5,-1,-1},
{4,0,6,-1},
{3,1,5,7},
{2,4,8,-1},
{3,7,-1,-1},
{4,6,8,-1},
{5,7,-1,-1}
};
struct qtype {
int board[9];
struct qtype *next;
struct qtype *parent;
}*print;
struct node {
int check[9];
struct node *next;
}*list,*p;
typedef struct qtype QUEUE;
typedef struct node NODE;
QUEUE *rear=NULL,*tfront=NULL;
int qempty()
{ return tfront==NULL; }
void qinsert(int *m)
{
int i;
QUEUE *newnode;
newnode=(QUEUE *)malloc(sizeof(QUEUE));
for(i=0;i<9;i++)
newnode->board[i]=m[i];
newnode->parent=tfront; if(rear==NULL)
rear=tfront=newnode;
else
{
rear->next=newnode;
rear=newnode;
}
}
NODE * getnode(int *m)
{
NODE *tempnode;
int i;
tempnode=(NODE *)malloc(sizeof(NODE));
tempnode->next=NULL;
for(i=0;i<9;i++)
tempnode->check[i]=m[i];
return tempnode;
}
void ins_in2_list(int *m)
{
NODE *aux;
int i;
aux=getnode(m);
if(list==NULL)
list=aux;
else
{
aux->next=list;
list=aux;
}
}
int dublicate(int *m)
{
NODE *temp=list;
int i;
while(temp!=NULL)
{
for(i=0;i<9;i++)
{ if(temp->check[i]!=m[i])
break;
}
if(i==9)
return 1;
temp=temp->next;
}
return 0;
}
void print_soln()
{
int i;
while(p!=NULL)
{
for(i=0;i<9;i++)
{
printf("%d\t",p->check[i]);
if((i+1)%3==0)
printf("\n");
}
printf("\n\n");
getch();
p=p->next;
}
}
void bfs()
{
int i,j,t[9],v,k,l,c=0;
NODE *aux;
p=NULL;
qinsert(initial);
ins_in2_list(initial);
while(!qempty())
{
for(i=0;i<9;i++)
if(tfront->board[i]==0)
break;
j=0;
while(moves[i][j]>=0&&j<=3)
{
for(k=0;k<9;k++)
t[k]=tfront->board[k];
v=t[i];
t[i]=t[moves[i][j]];
t[moves[i][j]]=v;
if(!dublicate(t))
{
qinsert(t);
ins_in2_list(t);
for(l=0;l<9;l++)
if(final[l]!=t[l])
break;
if(l==9)
{
printf("soln found...\n");
print=rear;
while(print!=NULL)
{
aux=getnode(print->board);
if(p==NULL)
p=aux;
else
{
aux->next=p;
p=aux;
}
print=print->parent;
}
print_soln();
exit(1);
}
}
j++;
}
tfront=tfront->next;
}
}
main()
{
int i,j;
list=NULL;
printf("initial state\n");
for(i=0;i<9;i++)
{
printf("%d\t",initial[i]);
if((i+1)%3==0)
printf("\n");
}
printf("\n\n");
printf("final state\n");
for(i=0;i<9;i++)
{
printf("%d\t",final[i]);
if((i+1)%3==0)
printf("\n");
}
printf("\n\n");
bfs();
getch();
}