【C语言题解】编写题解 1692: 数据结构-稀疏矩阵转置

原题链接:数据结构-稀疏矩阵转置 - C语言网 (dotcpp.com)

#include <stdio.h>
#include <malloc.h>
//定义一个结构体,存储数字的,值,行,列
typedef struct Link {
    int data;
    int hang;
    int lie;
}*node,Node;
//存储非零元素的结构体指针
node Num[1000];
int main(){
    int a,b,i,j,temp,n=0,k,flag;
    node p;
    scanf ("%d%d",&a,&b);
    for (i=1;i<=a;i++){
        for (j=1;j<=b;j++){
            scanf ("%d",&temp);
			//只储存非0元素
            if (temp){
				//分配内存给p
                p=(node)malloc(sizeof(Node));
				//p的值,为当前读入的值
				//p的行和列等于当前的行和列
                p->data=temp;
                p->hang=i;
                p->lie=j;
				//将当前的指针储存在数组中
                Num[n++]=p;
            }
        }
    }
    for (i=1;i<=b;i++){
        for (j=1;j<=a;j++){
            flag=1;
			//元素的列等于当前遍历时的行,元素的列等于当前遍历的行时
			//输出元素
            for (k=0;k<n;k++){
                if (Num[k]->hang==j && Num[k]->lie==i){
                    printf("%d ",Num[k]->data);
                    flag=0;
                    break;
                }
            }
			//没有找到这样的元素就输出0
            if (flag) printf("0 ");
        }
        printf("\n");
    }
    return 0;
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值