女人久久久www免费人成看片,国内自拍偷拍网,国产一区二区三区免费在线观看,欧美精品三区四区,91久久国产综合久久91,欧美成人精品第一区二区三区 ,美女成人在线观看

軟題庫 移動(dòng)APP 掃碼下載APP 隨時(shí)隨地移動(dòng)學(xué)習(xí) 培訓(xùn)課程
試卷名稱 2006年下半年程序員考試下午真題試題(案例分析)
考試中心《2006年下半年程序員考試下午真題試題(案例分析)》在線考試
試卷年份2006年下半年
試題題型【分析簡答題】
試題內(nèi)容

閱讀以下說明和C函數(shù),將應(yīng)填入(n)處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
【說明】
    若一個(gè)矩陣中的非零元素?cái)?shù)目很少且分布沒有規(guī)律,則稱之為稀疏矩陣對(duì)丁tm行n列的稀疏矩陣M,進(jìn)行轉(zhuǎn)置運(yùn)算后得到n行m列的矩陣MT,如圖3-1所示

    圖3-1稀疏矩陣M及其轉(zhuǎn)置矩陣MT

    為了壓縮稀疏矩陣的存儲(chǔ)空間,用三元組(即元素所在的行號(hào)、列號(hào)和元索宜、表示稀疏矩陣中的一個(gè)非零元素,再用一維數(shù)組逐行存儲(chǔ)稀疏矩陣中的所有非零三素也稱為三元組順序表)。例如,圖3-1所示的矩陣M相應(yīng)的三元組順序表如表3-1所示.其轉(zhuǎn)置矩陣MT的三元組順序表如表3-2所示。

    函數(shù)TransposeMatrix(Matrix M)的功能是對(duì)用三元組順序表表示的稀疏矩陣M進(jìn)行轉(zhuǎn)置運(yùn)算。
    對(duì)M實(shí)施轉(zhuǎn)置運(yùn)算時(shí),為了將M中的每個(gè)非零元素直接存入其轉(zhuǎn)置矩陣MT三元組順序表的相應(yīng)位置,需先計(jì)算M中每一列非零元素的數(shù)目(即MT中每一行非零幾素的數(shù)目),并記錄在向量num中;然后根據(jù)以下關(guān)系,計(jì)算出矩陣M中每列的第一個(gè)非零元素在轉(zhuǎn)置矩陣MT三元組順序表中的位置:
    cpot[0] = 0
    cpot[j] = cpot[ j-1]+num[j-1]〕 /* j為列號(hào) */
    類型ElemType, Triple和Matrix定義如下:
    typedef int ElemType;
    typedef struct{ /* 三元組類型 */
    int r,c; /* 矩陣元素的行號(hào)、列號(hào) */
    ElemType e; /* 矩陣元素的值 */
    }Triple;
    typedef struct{ /* 矩陣的元組三元組順序表存儲(chǔ)結(jié)構(gòu) */
    int rows,cols,elements; /* 矩陣的行數(shù)、列數(shù)和非零元素?cái)?shù)目 */
    Triple data[MAXSIZE]:
    }Matrix;
 
 
【C函數(shù)】
int TransposeMatrix(Matrix M)

    int j , q , t;
    int *num, *cpot;
    Matrix MT; /* MT是M的轉(zhuǎn)置矩陣 */
    num =(int*)malloc(M.cols*sizeof(int));
    cpot =(int*)malloc (M.cols*sizeof(int));
    if(!num || !cpot)
    return ERROR;
MT. rows = (1) ; /*設(shè)置轉(zhuǎn)置矩陣MT行數(shù)、列數(shù)和非零元數(shù)目*/
    MT. cols =(2);
    MT.elements = M.elements;
    if (M. elements > 0){
for (q = 0 ; q < M. cols ; q++)
num[q] = 0;
for (t = 0 ; t < M. elements ; ++t )  /* 計(jì)算矩陣M中每一列非零元素?cái)?shù)目 */
  num [M.data [t].c]++:
 
 /* 計(jì)算矩陣M中每列第一個(gè)非零元素在其轉(zhuǎn)置矩陣三元組順序表中的位置 */(3) ;
 for(j = 1 ; j<M. cols ; j++)
 cpot[j] = (4):
 
/* 以下代碼完成轉(zhuǎn)置矩陣MT三元組順序表元素的設(shè)置 */
 for(t = 0 ; t<M.elements ; t++){
  j = (5)  /* 取矩陣M的一個(gè)非零元素的列號(hào)存入j */
 
  /*q為該非零元素在轉(zhuǎn)置矩陣MT三元組順序表中的位置(下標(biāo))*/
  q = cpot[j];
  MT. data[q].r = M. data[t].c;
  MT. data[q].c = M. data[t].r;
  MT. data[q].e = M. data[t].e;
  ++cpot[j];  /* 計(jì)算M中第j列的下一個(gè)非零元素的目的位置 */
  }/* for */
    }/* if */
free(num); free(cpot);
 
  /* 此處輸出矩陣元素,代碼省略 */
 
    return OK;
}/*TransposeMatrix*/


相關(guān)試題

推薦文章