该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
void main()
{
int start[3][3];
int i,j,step = 0;
//int text=0;
char c;
node *p, *q, *head, *l, *k, *fhead;
printf("Please input your 3*3 matrix:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d,", &start[i][j]);
}
printf("\n The matrix you input is :\n");//打印输入节点
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d\t",start[i][j]);
printf("\n");
}
fhead = null;
head = (node*)malloc(sizeof(node));
head->next = null;
head->parent = null;
//建立第一个节点
p = (node*)malloc(sizeof(node));
q = (node*)malloc(sizeof(node));
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
(*p).start[i][j] = start[i][j];
}
(*p).d = 0;
(*p).h = 0;
(*p).h = CalculateH(p);
p->parent = null;
Findzero(p);
(*p).f = (*p).d + (*p).h;
//fhead = close(fhead,p);//进入close表
//head = open(head,p);
printf(" h %d \n",p->h);
while(p->h)
{
q = spread(p);
while(q->next) //!循环条件有问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
{
l = q->next;
q->next = 0;
head = open(head,q);
q = l;
}
p = head;//!没有进入??
k = p->next;
fhead = close(fhead,p);//进入close表
head->next = k;
printf("\n The result is f= %d ",p->f);
step = p->d;
while(p)
{
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%d\t",p->start[i][j]);
printf("\n");
}
}
p = p->parent;
step--;
}
}
}