首页 > 代码库 > 堆栈队列和数组-三元组稀疏矩阵

堆栈队列和数组-三元组稀疏矩阵

#include<iostream>#include <iomanip>#include"windows.h"using namespace std;struct Tripple{    int x,y,value;};struct TrippleMatrix{    int r,c,cnt;    Tripple* tripples;};TrippleMatrix* createTrippleMatrix(int r,int c,int maxCnt){    TrippleMatrix* p = (TrippleMatrix*)malloc(sizeof(TrippleMatrix));    p->r=r;    p->c=c;    p->cnt=0;    p->tripples=new Tripple[maxCnt];    return p;}TrippleMatrix* transpose(TrippleMatrix*  src){    TrippleMatrix* ans =createTrippleMatrix(src->c,src->r,src->cnt);    for(int i=1;i<=ans->r;i++)    {        for(int j=0;j<src->cnt;j++)        {            if(src->tripples[j].y==i)            {                Tripple newTripple;                newTripple.x=i;                newTripple.y=src->tripples[j].x;                newTripple.value=src->tripples[j].value;                ans->tripples[ans->cnt++]=newTripple;            }        }    }    return ans;}void output(TrippleMatrix* src){    int cur=0;    for(int i=1;i<=src->r;i++)    {        for(int j=1;j<=src->c;j++)        {            if(src->tripples[cur].x==i && src->tripples[cur].y==j)            {                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);//彰显非0元                cout<<src->tripples[cur].value<<"   ";                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);//设置三色相加                cur++;            }            else cout<<"0   ";        }        cout<<endl;    }}void main(){     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);//设置三色相加     int r=12,c=17,maxCnt=40;     TrippleMatrix* m= createTrippleMatrix(r,c,maxCnt);     for(int i=1;i<=r;i++)     {         for(int j=1;j<=c;j++)         {             if(rand()%10==1 && m->cnt<maxCnt)             {                 m->tripples[m->cnt].x=i;                 m->tripples[m->cnt].y=j;                 m->tripples[m->cnt].value=http://www.mamicode.com/rand()%10;                 m->cnt++;             }         }     }     output(m);     cout<<endl;     output(transpose(m));     cin>>r;}

 

堆栈队列和数组-三元组稀疏矩阵