一个稀疏矩阵A[m,n]采用三元组顺序表形式表示,若把三元组中有关行下标与列下标的值互换,并把m和n的值互换,则就完成了A[m,n]的转置运算。

题目

一个稀疏矩阵A[m,n]采用三元组顺序表形式表示,若把三元组中有关行下标与列下标的值互换,并把m和n的值互换,则就完成了A[m,n]的转置运算。


相似考题
更多“一个稀疏矩阵A[m,n]采用三元组顺序表形式表示,若把三元组中有关行下标与列下标的值互换,并把m和n的值互换,则就完成了A[m,n]的转置运算。”相关问题
  • 第1题:

    若采用三元组存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算。()

    此题为判断题(对,错)。


    正确答案:错误

  • 第2题:

    阅读以下说明和C函数,将应填入(n)处的字句写在对应栏内。

    [说明]

    若一个矩阵中的非零元素数目很少且分布没有规律,则称之为稀疏矩阵。对m行n列的稀疏矩阵M,进行转置运算后得到n行m列的矩阵MT,如图3-1所示

    为了压缩稀疏矩阵的存储空间,用三元组(即元素所在的行号、列号和元素值、表示稀疏矩阵中的一个非零元素,再用一维数组逐行存储稀疏矩阵中的所有非零元素也称为三元组顺序表)。例如,图3-1所示的矩阵M相应的三元组顺序表如表3-1所示。其转置矩阵MT的三元组顺序表如表3-2所示。

    函数TransposeMatrix(Matrix M)的功能是对用三元组顺序表表示的稀疏矩阵M进行转置运算。

    对M实施转置运算时,为了将M中的每个非零元素直接存入其转置矩阵MT三元组顺序表的相应位置,需先计算M中每一列非零元素的数目(即MT中每一行非零元素的数目),并记录在向量num中;然后根据以下关系,计算出矩阵M中每列的第一个非零元素在转置矩阵MT三元组顺序表中的位置:

    cpot[0]=0

    cpot[j]=cpot[j-1]+num[j-1]) /*j为列号*/

    类型ElemType,Triple和Matrix定义如下:

    typedef int ElemType;

    typedef struct{ /*三元组类型*/

    int r,c; /*矩阵元素的行号、列号*/

    ElemType e; /*矩阵元素的值*/

    }Triple;

    typedef struct{ /*矩阵的元组三元组顺序表存储结构*/

    int rows,cols,elements; /*矩阵的行数、列数和非零元素数目*/

    Triple data[MAXSIZE];

    }Matrix;

    [C语言函数]

    int TransposeMatrix(Matrix M)

    {

    int j,q,t;

    int *num, *cpot;

    Matrix MT; /*MT是M的转置矩阵*/

    num=(int*)malloc(M.cols*sizeof(int));

    cpot=(int*)malloc(M.cols*sizeof(int));

    if(!num ||cpot)

    return ERROR;

    MT.rows=(1); /*设置转置矩阵MT行数、列数和非零元素数目*/

    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) /*计算矩阵M中每一列非零元素数目*/

    num [M.data[t].c]++;

    /*计算矩阵M中每列第一个非零元素在其转置矩阵三元组顺序表中的位置*/

    (3);

    for(j=1;j<M.cols;j++)

    cpot[j]=(4);

    /*以下代码完成转置矩阵MT三元组顺序表元素的设置*/

    for(t=0;t<M.elements;t++){

    j=(5); /*取矩阵M的一个非零元素的列号存入j*/

    /*q为该非零元素在转置矩阵MT三元组顺序表中的位置(下标)*/

    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]; /*计算M中第j列的下一个非零元素的目的位置*/

    }/*for*/

    } /*if*/

    free(num); free(cpot);

    /*此处输出矩阵元素,代码省略*/

    return OK;

    }/*TransposeMatrix*/


    正确答案:(1)M.cols;(2)M.rows;(3)cpot[0]=0;(4)cpot[j-1]+num[j-1];(5)M.data[t].c
    (1)M.cols;(2)M.rows;(3)cpot[0]=0;(4)cpot[j-1]+num[j-1];(5)M.data[t].c

  • 第3题:

    稀疏矩阵是大量元素为0的矩阵。采用三元组法存储时,若有n个三元组,则该稀疏矩阵有 ______个非零元素。


    正确答案:n
    n 解析:三元组方法存储稀疏矩阵是将稀疏矩阵中所有非零元素列举出来的,因而从三元组的行数就可以知道非零元素的个数。

  • 第4题:

    设R和S分别为r和s元(度)关系,且R有n个元组,S有m个元组。执行关系R和S的笛卡儿积,记作T=R×S,则( )。A.T是一个具有n+m个元组的r+s元的关系B.T是一个具有n×m个元组的r×s元的关系C.T是一个具有n+m个元组的r×s元的关系D.T是一个具有n×m个元组的r+s元的关系


    正确答案:D
    笛卡尔积的结果是将元组数的乘积,而属性数的相加

  • 第5题:

    ●设下三角矩阵(上三角部分的元素值都为 0)A[0..n,0..n]如下所示,将该三角矩阵的所有非零元素(即行下标不小于列下标的元素)按行优先压缩存储在容量足够大的数组M[ ]中(下标从1 开始),则元素 A[I,j](O≤i≤n,j≤i)存储在数组M 的 (57) 中。


    正确答案:A
    试题(57)分析本题考查数组存储的基础知识。按行方式存储时,元素A[i,j]之前的元素个数为(1+2+…+i+j),由于数组M的下标从1开始,因此,存储A[i,j]的是M[1+2+…+i+j+1],即M[i(i+1)/2+j+1]。参考答案(57)A

  • 第6题:

    试题三(共15分)

    阅读以下说明和C 函数,将应填入(n) 处的字句写在答题纸的对应栏内。

    [说明]

    若一个矩阵中的非零元素数目很少且分布没有规律,则称之为稀疏矩阵。对于m行n 列的稀疏矩阵M,进行转置运算后得到n 行m列的矩阵MT,如图3-1 所示。

    函数TransposeMatrix(Matrix M)的功能是对用三元组顺序表表示的稀疏矩阵M 进行转置运算。

    对 M 实施转置运算时,为了将M 中的每个非零元素直接存入其转置矩阵MT 三元组顺序表的相应位置,需先计算M 中每一列非零元素的数目(即MT 中每一行非零元素的数目),并记录在向量num 中;然后根据以下关系,计算出矩阵M 中每列的第一个非零元素在转置矩阵MT 三元组顺序表中的位置:

    cpot[0] = 0

    cpot[j] = cpot[j-1] + num[j-1] /* j 为列号 */

    类型ElemType、Triple 和Matrix 定义如下:

    typedef int ElemType;

    typedef struct { /* 三元组类型 */

    int r,c; /* 矩阵元素的行号、列号*/

    ElemType e; /* 矩阵元素的值*/

    }Triple;

    typedef struct { /* 矩阵的三元组顺序表存储结构 */

    int rows,cols,elements; /* 矩阵的行数、列数和非零元素数目 */

    Triple data[MAXSIZE];

    }Matrix;

    [C函数]

    int TransposeMatrix(Matrix M)

    {

    int j,q,t;

    int *num, *cpot;

    Matrix MT; /* MT 是M的转置矩阵 */

    num = (int *)malloc(M.cols*sizeof(int));

    cpot = (int *)malloc(M.cols*sizeof(int));

    if (!num || !cpot)

    return ERROR;

    MT.rows = (1) ; /* 设置转置矩阵MT行数、列数和非零元数目*/

    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) /* 计算矩阵M 中每一列非零元素数目*/

    num[M.data[t].c]++;

    /* 计算矩阵M中每列第一个非零元素在其转置矩阵三元组顺序表中的位置*/

    (3) ;

    for(j = 1;j < M.cols; j++)

    cpot[j] = (4) ;

    /* 以下代码完成转置矩阵MT三元组顺序表元素的设置 */

    for(t = 0; t < M.elements;t++){

    j = (5) ; /* 取矩阵M 的一个非零元素的列号存入j */

    /* q 为该非零元素在转置矩阵MT 三元组顺序表中的位置(下标)*/

    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]; /* 计算M 中第j列的下一个非零元素的目的位置 */

    }/* for */

    }/* if */

    free(num); free(cpot);

    /*此处输出矩阵元素,代码省略*/

    return OK;

    }/* TransposeMatrix */


    正确答案:

  • 第7题:

    稀疏矩阵是大量元素为0的矩阵。采用三元组法存储时,若有n行三元组,则该稀疏矩阵有____________个非零元素。


    正确答案:
    n【解析】三元组方法存储稀疏矩阵是将稀疏矩阵中所有非零元素列举出来的,因而从三元组的行数就可以知道非零元素的个数。

  • 第8题:

    一个稀疏矩阵Am*n采用三元组形式表示,若把三元组中有关行下标与列下标的值互换,并把m和n的值互换,则就完成了Am*n的转置运算。


    正确答案:错误

  • 第9题:

    对稀疏矩阵进行压缩存储,可采用三元组表,一个6行7列的稀疏矩阵A共有38个零元素,其相应的三元组表共有()个元素。


    正确答案:4

  • 第10题:

    若关系R和S分别包含r和s个属性,分别含有m和n个元组,则R×S()

    • A、包含r+s个属性和m+n个元组
    • B、包含r+s个属性和m×n个元组
    • C、包含r×s个属性和m+n个元组
    • D、包含r×s个属性和m×n个元组

    正确答案:B

  • 第11题:

    单选题
    设关系R和S的元数分别是r和s,且R有n个元组,S有m个元组。执行关系R和S的笛卡尔积,记为T=R×S,则()。
    A

    T的元数是(r×s),且有(n+m)个元组

    B

    T的元数是(r×s),且有(n×m)个元组

    C

    T的元数是(r+s),且有(n+m)个元组

    D

    T的元数是(r+s),且有(n×m)个元组


    正确答案: C
    解析: 暂无解析

  • 第12题:

    单选题
    采用稀疏矩阵的三元组表形式进行压缩存储,若要完成对三元组表进行转置,只要将行和列对换,这种说法()。
    A

    正确

    B

    错误

    C

    无法确定

    D

    以上均不对


    正确答案: B
    解析: 暂无解析

  • 第13题:

    按照压缩存储的思想,对于具有T个非零元素的M×N阶稀疏矩阵,可以采用三元组表存储方法存储,当T满足(45)关系时,这样做都有意义。

    A.T<M×N

    B.T<M×xN/3

    C.T≤((M×N)/3-1

    D.T<(M×N)/3-1


    正确答案:D
    解析:稀疏矩阵A有T个非零元素,加上行数M、列数N和非零元素个数T(也算一个三元组),共占用3(T+1)个存储单元,用二维数组存储时占用M×N个单元,只有当3(T+1)M×N时,采用三元组表存储方法表示A才有意义。解不等式得r(MN)/3-1。

  • 第14题:

    当m行n列的稀疏矩阵采用十字链表表示时,其中单链表的个数为()。

    A.m+1

    B.n+1

    C.m+n+1

    D.MAX(m,n)+1


    参考答案:C

  • 第15题:

    设R和S分别是r和s元关系,且E有n个元组,s有m个元组。执行关系R和S的笛卡尔积,记为T=R×S,则( )。

    A) T的元数是(r+s),且有(n+m)个元组

    B) T的元数是(r+s),且有(n×m)个元组

    C) T的元数是(r×s),且有(n+m)个元组

    D) T的元数是(r×s),且有(n×m)个元组

    A.

    B.

    C.

    D.


    正确答案:B

  • 第16题:

    如下是一个稀疏矩阵的三元组法存储表示和基于此表示所得出的相关叙述行下标列下标值

    Ⅰ.该稀疏矩阵有5行Ⅱ.该稀疏矩阵有4列Ⅲ.该稀疏矩阵有6个非0元素这些叙述中正确的是( )。

    A)仅Ⅰ

    B)Ⅰ和Ⅱ

    C)仅Ⅲ

    D)全部


    正确答案:D
    三元法用一线性表来表示稀疏矩阵。线性表的每个结点对应稀疏矩阵在一个非零元素,每个结点包含3个域,分别为该元素的行下标、列下标和值。结点间的次序按矩阵在行优先顺序排列(跳过零元素)。这个线性表用顺序的方法存储在连续的存储区里。由三元组法的存储表示可以得到其矩阵如下:所以答案是D)选项。

  • 第17题:

    如下是一个稀疏矩阵的三元组法存储表示和相关的叙述:

    行下标 列下标 值

    1 2 6

    2 4 7

    2 1 4

    3 2 6

    4 4 1

    5 2 1

    5 3 6

    Ⅰ. 该稀疏矩阵有5行

    Ⅱ. 该稀疏矩阵有4列

    Ⅲ.该稀疏矩阵有7个非0元素

    这些叙述中哪个(些)是正确的是(36)。

    A.只有Ⅰ

    B.Ⅰ和Ⅱ

    C.只有Ⅲ

    D.Ⅰ、Ⅱ和Ⅲ


    正确答案:C
    解析:稀疏矩阵的三元组法存储只存储稀疏矩阵中不为。的元素的行下标、列下标以及元素的值,仅由稀疏矩阵的三元组法存储的矩阵相关信息,无法得知矩阵的行数和列数,但由题目可以得知矩阵至少有5行、4列

  • 第18题:

    设关系R和S的元数分别是r和s,且R有m个元组,S有n个元组。记R和S的笛卡儿积为A,则( )。

    A)A的元数是r s,且有n m个元组

    B)A的元数是r s,且有n?m个元组

    C)A的元数是r?s,且有n m个元组

    D)A的元数是r?s,且有n?m个元组


    正确答案:B

  • 第19题:

    设关系R和S的元数分别为r和s。那么,由属于R但不属于S的元组组成的集合运算称为__(1)__。在一个关系中找出所有满足某个条件的元组的运算称为__(2)__运算。对R和S进行__(3)__运算可得到一个r+s元的元组集合,其每个元组的前r个分量来自R的一个元组,后s个分量来自S的一个元组,如果R中有m个元组,S中有n个元组,则它们经__(4)__运算后共有__(5)__个元组。关系R和S的自然连接运算一般只用于R和S有公共__(6)__的情况。空白(5)处应选择()

    • A、m
    • B、n
    • C、m+n
    • D、m-n
    • E、m×n
    • F、m÷n

    正确答案:E

  • 第20题:

    采用稀疏矩阵的三元组表形式进行压缩存储,若要完成对三元组表进行转置,只要将行和列对换,这种说法()。

    • A、正确
    • B、错误
    • C、无法确定
    • D、以上均不对

    正确答案:B

  • 第21题:

    若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算。


    正确答案:错误

  • 第22题:

    判断题
    若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算。
    A

    B


    正确答案:
    解析: 暂无解析

  • 第23题:

    单选题
    若关系R和S分别包含r和s个属性,分别含有m和n个元组,则R×S()
    A

    包含r+s个属性和m+n个元组

    B

    包含r+s个属性和m×n个元组

    C

    包含r×s个属性和m+n个元组

    D

    包含r×s个属性和m×n个元组


    正确答案: B
    解析: 暂无解析

  • 第24题:

    判断题
    一个稀疏矩阵Am*n采用三元组形式表示,若把三元组中有关行下标与列下标的值互换,并把m和n的值互换,则就完成了Am*n的转置运算。
    A

    B


    正确答案:
    解析: 暂无解析