#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];
}
}
}
数据结构 三元组的快速转置
最新推荐文章于 2022-11-14 15:57:04 发布