数据结构 矩阵的快速转置 矩阵相乘(行逻辑连接顺序表)

快速转置

#include 
#include 
using namespace std;
class num
{
    public:
    int x,y;
    int e;
    int row,col;
}a[100000],b[100000];
int sum[100000],deal[1000000];
int main()
{
    int i,j,n,m,s,t,flag;
    int flag2;
    cin>>n>>m;
    a[0].row=n; a[0].col=m;
    flag=1;
    for(i=0;i<=n-1;i++)
    {
        for(j=0;j<=m-1;j++)
        {
            cin>>s;
            if(s)
            {
                a[flag].x=i;
                a[flag].y=j;
                a[flag++].e=s;
            }
        }
    }
    b[0].row=m; b[0].col=n;
    memset(sum,0,sizeof(sum));
    for(i=1;i<=flag-1;i++)
    {
        sum[a[i].y]++;
    }
    deal[0]=1;
    for(i=1;i<=m-1;i++)
    {
        deal[i]=deal[i-1]+sum[i-1];
    }
    for(i=1;i<=flag-1;i++)
    {
       flag2=deal[a[i].y];
       b[flag2].x=a[i].y;    b[flag2].y=a[i].x;
       b[flag2].e=a[i].e;
       deal[a[i].y]++;
    }
    int x=1;
    for(i=0;i<=b[0].row-1;i++)
    {
        for(j=0;j<=b[0].col-1;j++)
        {
            if(i==b[x].x&&j==b[x].y)
            {
                cout<


 

矩阵的相乘 (带行连接信息的三元组表为行逻辑链接的顺序表)

#include 
#include 
#include 
using namespace std;
class num
{
    public:
    int x,y;
    int e;
    int sum[10000],row,col,deal[10000];
}a[1000],b[1000],c[1000];
int sum[1000];
int main()
{
    void build(num *ex,int n,int m);
    int i,j,n,m,s,t,flag;
    cout<<"请输入矩阵1"<>n>>m;
    build(a,n,m);
    cout<<"请输入矩阵2"<>n>>m;
    build(b,n,m);
    if(a[0].col!=b[0].row)
    {
        cout<<"您输入错误"<>s;
            if(s)
            {
                t++;
                ex[flag].x=i; ex[flag].y=j;
                ex[flag++].e=s;
            }
        }
        ex[0].sum[i]=t;
    }
    ex[0].deal[0]=1;
    for(i=1;i<=n-1;i++)
    {
        (ex[0].deal)[i]=(ex[0].deal)[i-1]+(ex[0].sum)[i-1];
    }
}


 

你可能感兴趣的:(数据结构学习)