如果理解了我上次发的关于十字链表插入函数函数的话,这个函数的说明会相对简单。
输出可以有两种方式进行输出:
(1).第一种,按行进行输出,for循环遍历每一行,指针指向该行的第一个元素,如果指针往右走不为空的话,继续往右走,直到为空的时候,继续遍历下一行;
(2)第二种,按列进行输出,思路和第一种情况一样,for循环遍历每一列,指针指向该列的第一个元素,如果指针往下走不为空,继续往下走,直到为空的时候,继续遍历下一列。
具体看代码:
/* 8. 输出矩阵 */
void PrintSMatrix(CrossList M){
//初始条件: 稀疏矩阵M存在
int i, j;
for (i = 1; i <= M.rowSum; i++)
{ // 从第1行到最后1行
OLink p = M.rhead[i]; // p指向该行的第1个非零元素
for (j = 1; j <= M.ColSum; j++) // 从第1列到最后1列
if (!p || p->col != j) // 已到该行表尾或当前结点的列值不等于当前列值
printf("%-5d", 0); // 输出0
else
{
printf("%-5d", p->elem);
p = p->right;
}
printf("\n");
}
}
/* ************************************************************************** */