程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 圖片-數據結構:寫矩陣的轉置的程序時出現了了點小問題。。。

圖片-數據結構:寫矩陣的轉置的程序時出現了了點小問題。。。

編輯:編程解疑
數據結構:寫矩陣的轉置的程序時出現了了點小問題。。。

這是我在寫矩陣的轉置的時候 ,出現的一種類型的小問題,應該是挺簡單的一個問題 。但是我不知道怎麼改 哪位大神可以幫忙看
一看 謝謝~~~~~圖片說明圖片說明#include
#include

#define maxsize 100
typedef int elemtype;
typedef struct
{
int i,j;
elemtype e;
}triple;
typedef struct
{
triple data[maxsize+1];
int mu,nu,tu;
}tsmatrix;
void createsmatrix(tsmatrix *M)//創建稀疏矩陣
{
int i,m,n;
elemtype e;
int k,j;
printf("請輸入矩陣的行數 列數 非零元個數");
scanf("%d %d %d",&M->mu,&M->nu,&M->tu);
M->data[0].i=0;//為以下比較順序做准備
for(i=1;i<=M->tu;i++)
{
j=0;
do{
j++;
if(j>3){
printf("本次輸入失敗!");
exit(-1);

        } 
        printf("按行序輸入第%d個非零元素所在的行(1~%d)列(1~%d)值:",i,M->mu,M->nu);
        scanf("%d %d %d",&m,&n,&e);
        k=0;
        if(m<1||m>M->mu||n<1||n>M->nu) //行和列超過范圍 
        k=1;
        if(m<M->data[i-1].i||m==M->data[i-1].i&&n<=M->data[i-1].j)  k=1;//行或列的順序有錯

    }while(k);
    M->data[i].i=m;
    M->data[i].j=n;
    M->data[i].e=e;

 } 
 printf("\n");

}
void destorysmatrix(tsmatrix *M)//銷毀稀疏矩陣
{
M->mu=0;
M->nu=0;
M->tu=0;
}
void printsmatrix(tsmatrix M)
{
int i;
printf("稀疏矩陣對應的三元組表為:\n\n");
printf("行 列 元素值\n\n");
for(i=1;i<=M.tu;i++)
printf("%2d%4d%8d\n",M.data[i].i,M.data[i].j,M.data[i].e);
printf("\n\n");
}
void transposematrix(tsmatrix *M,tsmatrix *T)
{
int p,q,col;
T->mu=M->mu;
T->nu=M->nu;
T->tu=M->tu;
if(T->tu)
{
q=1;
for(col=1;col<=M->nu;++col)//按列序求轉置
for(p=1;ptu;++p)
if(M->data[p].j==col)
{
T->data[q].i=M->data[p].j;
T->data[q].j=M->data[p].i;
T->data[q].e=M->data[p].e;
++q;
}
}
}
int main()
{
tsmatrix A,B;
printf("創建矩陣A:\n");
createsmatrix(A);
printsmatrix(A);
printf("求A的轉置矩陣B:\n");
transposesmatrix(A,B);
printsmatrix(B);
destorysmatrix(A);
destorysmatrix(B);
return 0;
}

最佳回答:


很明顯的錯誤,你定義的是 struct tsmatrix結構體,而你的creatematrix函數的參數是是tsmatrix.

qq_36268750
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved