稀疏矩阵十字链表



#include<stdio.h>
#include<stdlib.h>




typedef struct Node
{
int i,j;
double t;
    struct Node *right, *down;            //删掉了struct
}Node, *Link;
typedef struct
{
Link *Rhead, *Chead;
int row,col,num;
}CMatrix;


void Create_Matrix(CMatrix *M)
{
int i,j,t,k;
Link p,q;
scanf("%d%d%d",&M->row,&M->col,&M->num);
M->Rhead=(Link *)malloc((M->row+1)*sizeof(Node));
M->Chead=(Link *)malloc((M->col+1)*sizeof(Node));
for(i=1;i<M->row+1;i++)    M->Rhead[i]=NULL;
for(i=1;i<M->col+1;i++)      M->Chead[i]=NULL;
    
    for(k=1;k<=M->num;k++)
{
scanf("%d%d%lf",&i,&j,&t);
p=(Link)malloc(sizeof(Node));
p->i=i; p->j=j; p->t=t;
if(M->Rhead[i]==NULL||M->Rhead[i]->j>j)
{
p->right=M->Rhead[j];
M->Rhead[i]=p;
}
else   
{
for(q=M->Rhead[i];q->right&&q->right ->j <j;q=q->right) ;
p->right=q->right;
q->right=p;
}
if(M->Chead[j]==NULL||M->Chead[j]->i>i)
{
p->down=M->Chead[ j ];
M->Chead[ j ]=p;
}
else   {
for(q=M->Chead[j];q->down&&q->down->i<i; q=q->down) ;
p->down=q->down;
q->down=p;
}
}
}


void Reverse_Matrix(CMatrix *M)
{
}


void Show_Matrix(CMatrix *M)
{
int col;
Link p;
for(col=1;col<M->col+1;col++)
{
p=M->Rhead[col];
while(p)
printf("%3d%3d%3lf",&p->i,&p->j,&p->t );
}
}


void main()
{
CMatrix m;
Create_Matrix(&m);
Show_Matrix(&m);
}









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值