第1个回答 2013-11-10
矩阵运算感觉用二维数组比较方便,如果非要用链表的话,也可以用二维数组转一下,给出个人的建议供参考吧
1、创建两个n*n的链表,分别存放A和B的数据,链表的结构中包含行号、列号和元素值,至于链表的初始化就不赘述了。
2、创建一个n*n的二维数组C,如果n是固定就直接定义数组,n可变就用new或者malloc吧。
3、对A、B两个矩阵链表做一个从头到尾的遍历,读出每个元素的行号row和列号range(貌似是这两个单词?),还有数值value
把MatrixAij和MartrixBij的值分别加到数组Cji中,这样就实现转置了。
4、返回值,看你需要返回成什么样,如果可以返回数组的话,就把二维数组C直接返回吧(但如果是new/malloc出来的要记得delete/free)。
如果还要返回一个链表的话就再来一个n*n的循环,把数组C的每个元素写到链表中,记得行号和列号也要同步写进去,写完了就返回吧。电脑键盘坏了,空格和方框还有分号都不能敲,没有给出程序,见谅。
如果周日都没人给程序的话,我再写一份吧。
第2个回答 2013-11-10
#include<stdio.h>
void main()
{
int i,j;
int a[3][3],b[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++){
printf("the value a[%d][%d]",i+1,j+1);
scanf("%d",&a[i][j]);
}
/* transfer the matrix a[i][j] */
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
b[i][j]=a[j][i];
}
printf("/////////////////////\n");
printf("the original matrix:\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%3d",a[i][j]);
printf("\n");
}
printf("/////////////////////\n");
printf("the transferd matrix:\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%3d",b[i][j]);
printf("\n");
}}