精华内容
下载资源
问答
  • 数据结构 矩阵转置

    2012-07-02 13:17:40
    矩阵转置 源代码 c语言编写 描述那么多干嘛
  • 输出来一个已有矩阵,将其转换为对应的三元组形式输出来,在对原有矩阵的三元组进行转置,得到原有矩阵转置三元组,并将其输出,最后以矩阵的格式将原有矩阵转置矩阵输出。
  • 矩阵转置与快速转置皆有,遍历输出对比也在其中,有需要的自取,保证真是可用,小白也能入门!
  • 数据结构矩阵转置方法一

    千次阅读 2019-02-19 13:27:41
    矩阵转置方法一 */ #include<stdio.h> #include<malloc.h> #define MaxSize 11 #define Row 11 #define Col 11 typedef struct { int...
    /*
    	矩阵转置方法一
    */
    #include<stdio.h>
    #include<malloc.h>
    #define MaxSize 11
    #define Row 11
    #define Col 11
    
    typedef struct
    {
    	int row,col;
    	int e;
    }Triple;
    
    typedef struct
    {
    	Triple data[MaxSize+1];
    	int m,n,len;//m代表行,n代表列,len代表长度
    }TSMatrix;
    
    void TransposeSMatrix(TSMatrix,TSMatrix *);
    
    void main()
    {
    	int i,j;
    	int num[Row][Col]={0};
    	int a[8]={1,1,3,3,4,5,6,6};
        int b[8]={2,3,1,6,3,2,1,4};
        int c[8]={12,9,-3,14,24,18,15,-7};
    	TSMatrix A,*B;
    	A.m=Row-1;
    	A.n=Col-1;
    	A.len=8;
    	for(i=1;i<=A.len;i++)
    	{
    		A.data[i].row=a[i-1];
    		A.data[i].col=b[i-1];
    		A.data[i].e=c[i-1];
    		num[a[i-1]][b[i-1]]=c[i-1];
    	}
    	printf("\n");
        printf("转换之前:\n\n");
    	for(i=1;i<Row;i++)
    	{
    		for(j=1;j<Col;j++)
    		{
    			printf("%-3d",num[i][j]);
    		}
    		printf("\n");
    	}
    	printf("\n三元组表:\n\nrow  col  v\n");
        for(i=1;i<=A.len;i++)  
        {  
            printf(" %d   %d   %d\n",A.data[i].row,A.data[i].col,A.data[i].e);  
        }  
    	B=(TSMatrix *)malloc(sizeof(TSMatrix));
    	TransposeSMatrix(A,B);
    	for(i=1;i<Row;i++)
    	{
            for(j=1;j<Col;j++)
    		{
                num[i][j]=0;
            }
        }
        for(i=1;i<=B->len;i++)
    	{
            num[B->data[i].row][B->data[i].col]=B->data[i].e;
        }
    	printf("转换之后:\n\n");
    	for(i=1;i<Row;i++)
    	{
            for(j=1;j<Col;j++)
    		{
                printf("%-3d",num[i][j]);
            }
            printf("\n");
        }
    	printf("\n三元组表:\n\nrow col  v\n");
        for(i=1;i<=B->len;i++)  
        {  
            printf(" %d   %d   %d\n\n",B->data[i].row,B->data[i].col,B->data[i].e);  
        } 
    }
    void TransposeSMatrix(TSMatrix A,TSMatrix *B )
    {
    	int p,col;
    	int q=1;
    	B->m=A.n;
    	B->n=A.m;
    	B->len=A.len;
    	if(B->len)
    	{
    		for(col=1;col<=A.n;col++)
    		{
    			for(p=1;p<=A.len;p++)
    			{
    				if(A.data[p].col==col)
    				{
    					B->data[q].row=A.data[p].col;
    					B->data[q].col=A.data[p].row;
    					B->data[q].e=A.data[p].e;
    					q++;
    				}
    			}
    		}
    	}
    }
    

    在这里插入图片描述

    展开全文
  • 简单的矩阵转置~~~是c语言的~~~~希望可以帮到大家~~
  • (1)编程实现基于三元组顺序表的矩阵转置。 (2)编程实现基于三元组顺序表的快速矩阵转置。 3.源程序和实验结果 编程实现基于三元组顺序表的矩阵转置。 /* 6 6 8 1 2 12 1 3 9 3 1 -3 3 6 14 4 3 24 5 2 ...

    1.实验目的

    (1)熟悉多维数组的逻辑结构特征及其存储方式;

    (2)熟悉特殊矩阵和稀疏矩阵的压缩存储方法及概念;

    1. 实验内容

    (1)编程实现基于三元组顺序表的矩阵转置。

    (2)编程实现基于三元组顺序表的快速矩阵转置。

    3.源程序和实验结果

    1. 编程实现基于三元组顺序表的矩阵转置。

     

    /*
    6 6 8
    1 2 12
    1 3 9
    3 1 -3
    3 6 14
    4 3 24
    5 2 18
    6 1 15
    6 4 -7
    */
    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct{
        int i,j;
        int e;
    }Triple;
    
    typedef struct{
        Triple data[201];
        int mu,nu,tu;
    }TSMatrix;
    
    int main()
    {
        TSMatrix M,T;
        while(scanf("%d%d%d",&M.mu,&M.nu,&M.tu)!=EOF)
        {
            for(int k = 1;k <= M.tu;k++)
                scanf("%d%d%d",&M.data[k].i,&M.data[k].j,&M.data[k].e);
            T.mu = T.nu;
            T.nu = M.mu;
            T.tu = M.tu;
            if(T.tu)
            {
                int col;
                int num[101],cpot[101];
                for(int k = 1;k <= M.nu;k++)
                    num[k] = 0; 
                for(int k = 1;k <= M.tu;k++)
                    num[M.data[k].j]++;
                cpot[1] = 1;
                for(col = 2;col <= M.tu;col++)
                    cpot[col] = cpot[col - 1] + num[col - 1];
                int q;
                for(int k = 1;k <= M.tu;k++)
                {
                    col = M.data[k].j;
                    q = cpot[col];
                    T.data[q].i = M.data[k].j;
                    T.data[q].j = M.data[k].i;
                    T.data[q].e = M.data[k].e;
                    cpot[col]++;
                }
            }
            printf("\n");
            for(int k = 1;k <= M.tu;k++)
                printf("%d %d %d\n",T.data[k].i,T.data[k].j,T.data[k].e);
        }
        return 0;
    }

     

    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct{
        int i,j;
        int e;
    }Triple;
    
    typedef struct{
        Triple data[201];
        int mu,nu,tu;
    }TSMatrix;
    
    int main()
    {
        TSMatrix M,T;
        while(scanf("%d%d%d",&M.mu,&M.nu,&M.tu)!=EOF)
        {
            for(int k = 1;k <= M.tu;k++)
                scanf("%d%d%d",&M.data[k].i,&M.data[k].j,&M.data[k].e);
            int p,q,col;
            T.mu = M.nu;
            T.nu = M.mu;
            T.tu = M.tu;
            if(T.tu)
            {
                q = 1;
                for(col = 1;col <= M.nu;col++)
                    for(p = 1;p <= M.tu;p++)
                        if(M.data[p].j == col)
                        {
                            T.data[q].j = M.data[p].i;
                            T.data[q].i = M.data[p].j;
                            T.data[q].e = M.data[p].e;
                            q++;
                        }
            }
            printf("\n");
            for(int k = 1;k <= M.tu;k++)
                printf("%d %d %d\n",T.data[k].i,T.data[k].j,T.data[k].e);
        }
        return 0;
    }

    展开全文
  • 矩阵转置效果如下图 二、思路 1、创建a, b两个数组,a存放转置前的矩阵, b存放转置后的矩阵 2、观察可得转置后的矩阵行列序号互换,此步由b数组实现 三、代码实现 #include <stdio.h> int main() { int a...


    产出

    CSDN 技术博客 1 篇

    一、 问题

    将矩阵转置效果如下图
    在这里插入图片描述

    二、思路

    1、创建a, b两个数组,a存放转置前的矩阵, b存放转置后的矩阵
    2、观察可得转置后的矩阵行列序号互换,此步由b数组实现

    三、代码实现

    #include <stdio.h>
    
    int main()
    {
    	int a[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}, b[4][3], i, j;
    	//a[3][4]为转置前数组, b[4][3]为转置后数组。i, j 分别计行、列数
    	printf("矩阵转置前\n");				//输出转置前的矩阵
    	for(i = 0; i < 3; i++)				//控制行数
    	{
    		for(j = 0; j < 4; j++)			//控制列数
    		{
    			printf("%d\t", a[i][j]);	//输出第i行第j列数据
    			b[j][i] = a[i][j];			//进行矩阵转置操作
    		}
    		printf("\n");					//每输出一行即换行
    	}
    	printf("矩阵转置后\n");				//输出转置后的矩阵
    	for(i = 0; i < 4; i++)				//控制行数
    	{
    		for(j = 0; j < 3; j++)			//控制列数
    		{
    			printf("%d\t", b[i][j]);	//输出第i行第j列数据
    		}
    		printf("\n");					//每输出一行即换行
    	}
    	return 0;
    }
    

    四、代码优化

    方向:可自行输入数据

    五、优化代码实现

    #include <stdio.h>
    
    int main()
    {
    	int r, c, i, j;//r为行数,c为列数。i, j 分别计行、列数。
    	printf("请输入需转置矩阵的行数\n");
    	scanf("%d", &r);
    	printf("请输入需转置矩阵的列数\n");
    	scanf("%d", &c);
    	int a[r][c], b[c][r];
    	printf("请输入矩阵数据\n");
    	for(i = 0; i < r; i++)
    	{
    		for(j = 0; j < c; j++)
    			scanf("%d", &a[i][j]);
    	}
    	printf("矩阵转置前\n");				//输出转置前的矩阵
    	for(i = 0; i < r; i++)				//控制行数
    	{
    		for(j = 0; j < c; j++)			//控制列数
    		{
    			printf("%d\t", a[i][j]);	//输出第i行第j列数据
    			b[j][i] = a[i][j];			//进行矩阵转置操作
    		}
    		printf("\n");					//每输出一行即换行
    	}
    	printf("矩阵转置后\n");				//输出转置后的矩阵
    	for(i = 0; i < c; i++)				//控制行数
    	{
    		for(j = 0; j < r; j++)			//控制列数
    		{
    			printf("%d\t", b[i][j]);	//输出第i行第j列数据
    		}
    		printf("\n");					//每输出一行即换行
    	}
    	return 0;
    }
    

    六、运行结果

    在这里插入图片描述

    展开全文
  • 数据结构实验之数组一:矩阵转置

    千次阅读 2018-10-16 21:27:23
    数据结构实验之数组一:矩阵转置 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description 数组——矩阵的转置 给定一个m*n的矩阵(m,n&lt;=100),求该矩阵的转置矩阵并输出。 Input ...

    数据结构实验之数组一:矩阵转置

    Time Limit: 1000 ms Memory Limit: 65536 KiB

    Submit Statistic

    Problem Description

    数组——矩阵的转置

    给定一个m*n的矩阵(m,n<=100),求该矩阵的转置矩阵并输出。

    Input

    输入包含多组测试数据,每组测试数据格式如下:
    第一行包含两个数m,n

    以下m行,每行n个数,分别代表矩阵内的元素。

    (保证矩阵内的数字在int范围之内)

    Output

    对于每组输出,输出给定矩阵的转置矩阵。两组输出之间用空行隔开。

    Sample Input

    2 3
    1 2 3
    4 5 6
    1 1
    1

    Sample Output

    1 4
    2 5
    3 6

    1

    #include <iostream>
    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
    int m,n,i,j,a[101][101];
    while(scanf("%d%d",&m,&n)!=EOF)
    {
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            {
                scanf("%d",&a[i][j]);
            }
        }
    
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            if(j==m-1)
                printf("%d\n",a[j][i]);
            else printf("%d ",a[j][i]);
        }
    }
    printf("\n");
    
    }
        return 0;
    }
    
    

    在这里插入图片描述

    展开全文
  • 矩阵转置(数据结构课本内容)

    千次阅读 2015-10-02 20:28:42
    矩阵转置(课本内容)
  • 给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵矩阵转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[[1,4,7],[2,5,8],[3,6,...
  • 数据结构实验 矩阵转置

    千次阅读 2016-10-27 17:14:44
    这次的实验是完成矩阵转置: 有两种方法可以实现,一种是直接按照列的值进行重排,另一种是快速转置 储存压缩矩阵有两种方式,一种是用二维数组来储存三元组,另一种是直接写在结构体里 (注意:用二维数组储存三元组的...
  • 数据结构-矩阵快速转置

    千次阅读 2017-12-20 21:24:01
     printf("转置矩阵为:\n");  PrintMatrix(T);  return 0; } int FastTransMatrix(TSMatrix M) {  TSMatrix T;  T.mu=M.nu;  T.nu=M.mu;  T.tu=M.tu;  int num[1000]={0};  int ...
  • 数据结构课小实验,简单实现稀疏矩阵转置,终端显示 压缩包包含:xxjz.txt,一个cpp,可直接编译运行
  • 关于数据结构矩阵转置的实现 代码详解
  • 用这样的方法,主要是希望,矩阵转置后,存储顺序依然是按照行来存储的。1.实现及代码注释根据上面的核心提示,可以有如下的代码,下面的代码中的注释已经非常详细,因此这里就不把每一部分实现的功能独立开来了:#...
  • 实现矩阵转置,可供用户使用方便快捷,大大减少了时间。
  • 通过该实验,让学生理解矩阵压缩存储的概念、方法等相关知识,掌握用三元组表的方式如何进行矩阵的压缩存储,并在此基础上进行转置操作,理解转置和快速转置两种矩阵转置算法的思想。 (2)实验内容 用三元组表压缩...
  • 数据结构矩阵快速转置

    千次阅读 2019-02-19 14:25:56
    矩阵快速转置 */ #include&amp;lt;stdio.h&amp;gt; #include&amp;lt;malloc.h&amp;gt; #define MaxSize 11 #define Row 11 #define Col 11 typedef struct { int row,col; int e; }Triple; typedef ...
  • 通过该实验,理解矩阵压缩存储的概念、方法等相关知识,掌握用三元组表方式如何进行矩阵的压缩存储,并在此基础上进行转置操作,理解转置和快速转置两种矩阵转置算法的思想。 三. 设计思想 首先,构建稀疏矩阵的三元...
  • 编写算法,实现矩阵转置,输出转置后的三元组到另一字符文件中,检查你的转置结果是否正确。要求转置时不得新建元素结点(但允许新建行头/列头结点数组以及删除行头/列头结点数组,转置前后,总头结点不允许改变)
  • 学习数据结构, 就会用的算法,矩阵转置
  • 稀疏矩阵转置 Description: 输出稀疏矩阵的转置矩阵。(行列均不大于20) Input: 第一行输入两个正整数n和m,分别表示矩阵的行数和列数, 然后输入矩阵三元组,最后输入(0 0 0)表示结束输入。 Output: 转置后的...
  • 此为数据结构上机实验 内容:矩阵转置 包括源文件和头文件
  • 某福建大三本的某三本学院的数据结构作业,题号对应清华殷人昆版。有一些可能参考借鉴了网上的代码,大体应该都能运行(尤其是大作业),仅供参考
  • 对于一个mxn的矩阵A[m][n],其转置矩阵是一个nxm的矩阵B[n][m],且B[i][j]=A[j][i],0<=i<n,0<=j<m。实现代码如下: /* 矩阵转置 */ /* A[][MAXSIZE]指的是原矩阵A;B[][MAXSIZE]指的是转置后的...
  • 矩阵转置没什么好说的,都在注释里了,上代码: #include<stdio.h> #include <stdlib.h> #define ok 1 #define error 0 #define max 1000 typedef struct { int hang; int lie; int data; }seq; void...
  • 1.这个实验在数据结构课本P97 ~ P100,难点在矩阵的快速转置、输入时按行序非递减输入的控制。 2.在进行快速转置的时候,要提前知道两点: 一、非零元素的个数; 二、每一列非零元素的位置。 一、运行效果截图 ...
  • 数据结构之---C语言实现矩阵转置//矩阵转置//我在上一篇博客中写道三元矩阵操作//其中的转置为了加深理解,这里重新用通俗//易懂的代码重新进行了编写,如理如下:#include #include int main(){int i, j, b[3]...
  • 因为实现矩阵转置的前提是将矩阵存储起来,数据结构中提供了 3 种存储矩阵的结构,分别是三元组顺序表、行逻辑链接的顺序表和十字链表。如果采用前两种结构,矩阵的转置过程会涉及三元组表也跟着改变的问题,如图 2 ...
  • 输入:稀疏矩阵的行数、列数、非零元个数(三个数都大于0)]以行为主序输入稀疏矩阵三元组表输出:辅助数组num[ ]辅助数组cpot[ ]以行为主序输出对应的转置矩阵三元组表测试输入6 7 81 2 121 3 93 1 -33 6 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,083
精华内容 6,833
关键字:

数据结构矩阵转置

数据结构 订阅