zoukankan      html  css  js  c++  java
  • 数据结构实验报告之三元组顺序存储的稀疏矩阵练习(代码版)

    #include <stdio.h>
    #define MAXSIZE 30
    #define n 5
    
    typedef int ElemType;
    // 定义三元组
    typedef struct{
        int i, j;
        ElemType value;
    }Triple;
    // 矩阵压缩
    int zipMatrix(int arr[n][n], Triple *t){
        int index=0;
        int i,j;
        for(i=0;i<n;i++)
            for(j=0;j<n;j++){
                if(arr[i][j]!=0){
                    t->i=i+1,t->j=j+1;
                    t->value=arr[i][j];
                    t++;
                    index++;
                }
            }
        return index;
    }
    // 对角线求和
    int sumMatrix(Triple t[], int size){
        int s=0;
        for(int k=0;k<size;k++){
            if(t[k].i==t[k].j||(t[k].i+t[k].j)==n-1){
                s=s+(t[k].value);
            }
        }
        return s;
    }
    // 快速转置
    void swapMatrix(Triple t[], int size){
        Triple T[size]={};
        int num[n+1]={};
        int p[n+1]={};
        int temp,k;
      
    int col[n]={}; for(k=0;k<size;k++){ col[t[k].j]++; } for(k=1;k<=n;k++){ num[k]=col[k-1]; } p[1]=1; for(k=2;k<=n;k++){ p[k]=p[k-1]+num[k-1]; } for(k=0;k<size;k++){ temp=p[t[k].j]-1;
          while(T[temp++].value!=0); T[temp-1].i=t[k].j; T[temp-1].j=t[k].i; T[temp-1].value=t[k].value; } for(k=0;k<size;k++){ printf("(%d,",T[k].i); printf("%d,",T[k].j); printf("%d)",T[k].value); } } int main(){ // 定义一个数组 int arr[n][n]={{0,0,6,4,0}, {7,3,8,0,0},{0,4,0,2,0}, {6,3,0,0,0},{4,0,9,0,1} }; // 初始化一个三元组 Triple t[MAXSIZE]={}; Triple *T=t; int size=zipMatrix(arr,T); int sum=sumMatrix(t,size); printf("对角线之和为:%d ",sum); printf("原三元组 "); for(int k=0;k<size;k++){ printf("(%d,",t[k].i); printf("%d,",t[k].j); printf("%d)",t[k].value); } printf(" "); printf("经转置的三元组 "); swapMatrix(t,size); return 0; }
    爱我没结果!
  • 相关阅读:
    死磕算法第一弹——数组、集合与散列表
    拼写纠正
    IntelliJ系列IDE中的project和module
    【Spring】学习SpringAOP
    MyEclipse打开Jsp报错Failed to create the part's controls
    【Spring】学习SpringIoC
    【GitHub】Set up GitHub for Win10
    【<meta name="" content=">】的作用
    【JSP】修改网页ico小图标
    【JSP】导航栏悬停顶部简单特效
  • 原文地址:https://www.cnblogs.com/angoli/p/12746468.html
Copyright © 2011-2022 走看看