#include<iostream>
using namespace std;
typedef struct OLNode
{
int row,col;
struct OLNode *right,*down;
int val;
}OLNode;
typedef struct
{
OLNode *rhead,*chead;
int m,n,k;
}CrossList;
void create(int a[][90],int m,int n,int k,CrossList &M)
{
if(M.rhead)
free(M.rhead);
if(M.chead)
free(M.chead);
M.m=m;
M.n=n;
M.k=k;
M.rhead=(OLNode*)malloc(sizeof(OLNode)*99);
M.chead=(OLNode*)malloc(sizeof(OLNode)*99);
for(int i=0;i<m;++i)
{
M.chead[i].right=NULL;
M.chead[i].down=NULL;
}
for(int j=0;j<n;++j)
{
M.rhead[j].right=NULL;
M.rhead[j].down=NULL;
}
OLNode *temps[90];
for(int j=0;j<n;++j)
temps[j]=&(M.rhead[j]);
for(int i=0;i<m;++i)
{
OLNode *r=&(M.chead[i]);
for(int j=0;j<n;++j)
{
if(a[i][j]!=0)
{
OLNode *p=(OLNode*)malloc(sizeof(OLNode));
p->row=i;
p->col=j;
p->val=a[i][j];
p->right=NULL;
p->down=NULL;
r->right=p;
r=p;
temps[j]->down=p;
temps[j]=p;
}
}
}
}
void print(CrossList M)
{
OLNode *r;
for(int i=0;M.m;++i)
{
r=&(M.chead[i]);
r=r->right;
for(int j=0;j<M.n;++j)
{
if(r->row==i&&r->col==j)
{
cout << r->val <<' ';
r=r->right;
}
else
cout << 0 <<' ';
}
cout << endl;
}
}
int main()
{
int a[][90]={{0,0,0,1},
{0,0,3,2},
{1,0,0,0},
{0,2,2,2}};
CrossList M;
create(a,4,4,7,M);
print(M);
return 0;
}
06-03
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交