用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

建立稀疏矩阵的十字链表

2012-10-10 作者: 神马举报

[c]代码库

typedef struct node
{
	int row, col;
	struct node *down , *right;
	union v_next
	{
		datatype v;
		struct node *next;
	}
} MNode,*MLink;


MLink CreatMLink( ) /* 返回十字链表的头指针*/
{
MLink H;
Mnode *p,*q,*hd[s+1];
int i,j,m,n,t;
datatype v;
scanf ( “%d,%,%d”,&m,&n,&t );
H=malloc ( sizeof ( MNode ) ); /*申请总头结点*/
H->row=m;
H->col=n;
hd[0]=H;
for ( i=1; i<S; i++ )
{
	p=malloc ( sizeof ( MNode ) ); /*申请第i 个头结点*/
	p->row=0;
	p->col=0;
	p->right=p;
	p->down=p;
	hd[i]=p;
	hd[i-1]->v_next.next=p;
}
hd[S]->v_next.next=H; /*将头结点们形成循环链表*/
for ( k=1; k<=t; k++ )
{
	scanf ( “%d,%d,%d”,&i,&j,&v ); /*输入一个三元组,设值为int*/
	p=malloc ( sizeof ( MNode ) );
	p->row=i ;
	p->col=j;
	p->v_next.v=v
	            /*以下是将*p 插入到第i 行链表中去,且按列号有序*/
	            q=hd[i];
	while ( q->right!=hd[i] && ( q->right->col ) <j ) /*按列号找位置*/
		q=q->right;
	p->right=q->right; /*插入*/
	q->right=p;
	/*以下是将*p 插入到第j 行链表中去,且按行号有序*/
	q=hd[i];
	while ( q->down!=hd[j] && ( q->down->row ) <i ) /*按行号找位置*/
		q=q->down;
	p-> down =q-> down; /*插入*/
	q-> down =p;
} /*for k*/
return H;
} /* CreatMLink */


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...