nbsp; m[--i]=j; //从所有未知量标号中筛选出自由未知量标号
if (i==0)
break;
}
else
{
if (psnew->next!=NULL)
psnew=psnew->next;
}
}
printf("线性方程组有无穷多组解\n");
printf("一般解:\n");
i=row;
for (psnew=head->next; psnew!=NULL; psnew=psnew->next)
{
printf("x%d=%f", psnew->col, a[i-1][N-1]); //输出一般解
for (j=0; j<N-1-row; j++)
{
if(m[j]<psnew->col)
{
printf("-%dx%d", 0, m[j]);
}
else
{
printf("-%fx%d", a[i-1][m[j]-1], m[j]);
}
}
printf("\n");
i--;
}
}
}
}
}
int test(int s, int t, float a[][N]) //判断增广矩阵的s行至M行与t列至N列相交形成的子矩阵是否为零矩阵,若是返回0,若不是返回第一个不为零的列的列标
{
int i, j;
for (j=t-1; j<N; j++)
{
for (i=s-1; i<M; i++)
{
if (a[i][j]!=0)
return (j+1);
}
}
return (0);
}
void add(mc1 *head, int col, mc1 **tail) //函数,用于新建一节点,其中保存有主元col列标,然后按递减顺序将其插入maincol类型的链表
{
&nbs