这是自己{dy}次编那么长的代码,虽然一些代码是抄的,不过还是有一点成就感的。哈哈。
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
int num[100];
typedef struct OLNode{
int i,j;
int e;
struct OLNode *right,*down;
}OLNode,*OLink;
typedef struct {
int mu,nu,tu;
OLink *rhead,*chead;
}CrossList;
typedef struct{
int i,j;
int e;
}Triple;
typedef struct{
Triple data[MAXSIZE];
int nu,mu,tu;
}TSMatrix;
int CreateSMatix_OL(CrossList &M){
printf("请输入稀疏矩阵的行数,列数,非零元素的个数");
scanf("%d%d%d",&M.mu,&M.nu,&M.tu);
M.rhead=(OLink *)malloc((M.mu+1)*sizeof(OLNode));
M.chead=(OLink *)malloc((M.nu+1)*sizeof(OLNode));
for( i=1;i<=M.mu;i++)M.rhead[i]=NULL;
for( i=1;i<=M.nu;i++)M.chead[i]=NULL;
printf("请输入稀疏矩阵,如果行为0,则退出\n");
scanf("%d%d%d",&i,&j,&e);
while(i!=0){
p=(OLink)malloc(sizeof(OLNode));
p->i=i;p->j=j;p->e=e;
if(M.rhead[i]==NULL||M.rhead[i]->j>j){p->right=M.rhead[i];M.rhead[i]=p;}
else{
if(M.chead[j]==NULL||M.chead[j]->i>i){p->down=M.chead[j];M.chead[j]=p;}
else{
q=M.chead[j];
while(q->down&&q->down->i<i)q=q->down;
p->down=q->down;
q->down=p;
}
scanf("%d%d%d",&i,&j,&e);
}
return 1;
}//创建十字链表
void CreateSMatrix(TSMatrix &M){
int h,r;
int i,t;
int k=1;
printf("please input the Matri");
scanf("%d",&M.data[k].i);
scanf("%d",&M.data[k].j);
scanf("%d",&M.data[k].e);
h=M.data[k].i;
r=M.data[k].j;
while(M.data[k].i!=-1){k++;
scanf("%d",&M.data[k].i);
scanf("%d",&M.data[k].j);
scanf("%d",&M.data[k].e);
h=h>M.data[k].i?h:M.data[k].i;
r=r>M.data[k].j?r:M.data[k].j;
}
M.tu=--k;
M.mu=h;
M.nu=r;
int num[100];
}//三元组
void TransposeSMatrix(TSMatrix M,TSMatrix
&T){
T.nu=M.mu;
T.mu=M.nu;
T.tu=M.tu;
int q=1;
for(int col=1;col<=M.nu;col++)
for(int p=1;p<=M.tu;p++)
if(M.data[p].j==col){
T.data[q].i=M.data[p].j;
T.data[q].j=M.data[p].i;
T.data[q].e=M.data[p].e;
q++;
}
}//三元组装置
int Compare(int a1,int b1,int a2,int b2){
if(a1>a2)return 1;
else if(a1<a2)return -1;
else if(b1>b2)return 1;
if(b1<b2)return -1;
else return 0;
}
void AddTMatix(TSMatrix M,TSMatrix T,TSMatrix
&S){
}}
S.data[q].e=M.data[mcount].e;
S.data[q].i=M.data[mcount].i;
S.data[q].j=M.data[mcount].j;
q++;
mcount++;
}//三元组相加
int
{