数据结构 三元组的快速转置

#include <iostream>

using namespace std;

#define maxSize 10000
typedef int ElemType;

struct Triple
{
    int i, j;
    ElemType e;
};

struct tsMatrix
{
    Triple data[maxSize + 1];
    int mu, nu, tu;
};

void fastTransposeSmatrix(tsMatrix m, tsMatrix &t);

int main()
{
    
}

void fastTransposeSmatrix(tsMatrix m, tsMatrix &t)
{
    t.mu = m.nu;
    t.nu = m.mu;
    t.tu = m.tu;

    if (t.tu)
    {
        int *num = new int[m.nu + 1];
        int *cpot = new int[m.nu + 1];
        for (int col = 0; col <= m.nu; col++)
            num[col] = 0;

        for (int t = 1; t <= m.tu; t++)
            ++num[m.data[t].j];
        cpot[1] = 1;
        for (int col = 2; col <= m.nu; ++col)
            cpot[col] = cpot[col - 1] + num[col - 1];

        int p, q;
        for (p = 1; p <= m.tu; ++p)
        {
            int col = m.data[p].j;
            q = cpot[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;
            ++cpot[col];
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值