#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);
}