欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第五章 数组

程序员文章站 2022-03-10 19:55:26
...

1.数组的定义

2.实验报告

第五章 数组

3.实验报告

(1)编程实现稀疏矩阵的三元组顺序表示方法及基本操作的实现(建立、输出、转置等)

#include <stdio.h> 
#include <iostream>
using namespace std;
#include <iomanip>
#include <string.h>
#include <malloc.h>
#include <process.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define OVERFLOW -1
typedef int Status;

TSMatrix_def.h

#define MAXSIZE 20
typedef int ElemType;
typedef struct{
 int i,j;
 ElemType e;
}Triple;
typedef struct{
 Triple data[MAXSIZE];
 int mu,nu,tu;
}TSMatrix;

main

#include "com_def.h"
#include "TSMatrix_def.h"
Status Craet(TSMatrix &L){
 Triple a;
 cout<<"请输入矩阵的行数:";
 cin>>L.mu;
 cout<<"请输入矩阵的列数:";
 cin>>L.nu;
 int i=0;
 for(i=0;;i++){
  cout<<"请输入该元素的行号:";
  cin>>a.i;
  cout<<"请输入该元素的列号:"; 
  cin>>a.j;
  cout<<"请输入该元素的值:";
  cin>>a.e;
  L.data[i]=a;
  char c='y';
  cout<<"继续输入请输入y(Y),否则退出:";
  cin>>c;
  if(c!='y'&&c!='Y'){
   break;
  }
 }
 L.tu=i+1;
 return OK;
}
Status Transpose(TSMatrix L,TSMatrix &M){//M为L的转置 行是mu i是行 ,快转 
 M.mu=L.nu;
 M.nu=L.mu;
 M.tu=L.tu;
 int col,q;
 int b[L.nu];//第i行有几个元素 
 for(int i=0;i<L.nu;i++) b[i]=0;
 int c[L.nu+1];//这几个元素从哪一个下标开始放 
 for(int i=0;i<L.tu;i++){
  b[L.data[i].j-1]++;
  /*if(L.data[i].e!=0){
   b[L.data[i].j]++;//第j列(转置后为第j行)非零元素个数
  }*/
 }
 c[1]=0;
 for(int i=2;i<=L.nu;i++){
  c[i]=c[i-1]+b[i-2];//算出从第几个开始放 
 }
 for(int i=0;i<L.tu;i++){//i行j列 
  //L.data[i].j
  col=L.data[i].j;
  q=c[col];
  M.data[q].i=L.data[i].j;
  M.data[q].j=L.data[i].i;
  M.data[q].e=L.data[i].e;
  c[col]++;
 }
 /*for(int i=0;i<4;i++){
  cout<<M.data[i].e<<"||";
 }*/
 return OK;
}
int main(int argc, char** argv) {
 TSMatrix L,M;
 Craet(L);
 cout<<"原行:"<<L.mu<<"\t"<<"原列:"<<L.nu<<endl;
 for(int i=0;i<L.tu;i++){
  cout<<"行:"<<L.data[i].i<<"  列:"<<L.data[i].j; 
  cout<<"  元素为:"<<L.data[i].e<<endl;
 }
 Transpose(L,M);
 cout<<"快速转置后:";
 cout<<"现行:"<<M.mu<<"\t"<<"现列:"<<M.nu<<endl;
 for(int x=0;x<M.tu;x++){
  cout<<"行:"<<M.data[x].i<<"  列:"<<M.data[x].j<<"  元素为:"<<M.data[x].e<<endl;
 }
}

相关标签: 数据结构