⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 6.cpp

📁 c语言十字链表源码下载
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>
#define NULL 0

typedef struct matnode{
	int row,col;
	struct matnode	*right,*down;
	union{
		int val;
		struct	matnode	*next;
	}tag;
}Mtype;

Mtype *creaemat()
{
	int m,n,t,s,i,r,c,v;
	Mtype	*h[100],*p,*q;
	printf("行数m,列数n,非零元个数t:");
	scanf("%d,%d,%d",&m,&n,&t);
	p=(Mtype  *)malloc(sizeof(Mtype));
	h[0]=p;
	p->row=m;
	p->col=n;
	s=m>n?m:n;
	for(i=1;i<=s;i++)
	{
		p=(Mtype  *)malloc(sizeof(Mtype));
		h[i]=p;
		h[i-1]->tag.next=p;
		p->row=p->col=0;
		p->down=p->right=p;
	}
	h[s]->tag.next=h[0];
	for(i=1;i<=t;i++)
	{
		printf("\t 第%d个元数(行号r,列号c,值v):",i);
		scanf("%d,%d,%d",&r,&c,&v);
		p=(Mtype  *)malloc(sizeof(Mtype));
		p->row=r;
		p->col=c;
		p->tag.val=v;
		q=h[r];
		while(q->right!=h[r]&&q->right->col<c)
			q=q->right;
		p->right=q->right;
		q->right=p;
		q=h[c];
		while(q->down!=h[c]&&q->down->row<r)
			q=q->down;
		p->down=q->down;
		q->down=p;
	}
	return(h[0]);
}

void prmatrow(Mtype  *hm)
{
		Mtype	*p,*q;
		printf("row=%d col=%d\n",hm->row,hm->col);
		p=hm->tag.next;
		while(p!=hm)
		{
			q=p->right;
			while(p!=q)
			{
				printf("\t%d,%d,%d\n",q->row,q->col,q->tag.val);
				q=q->right;
			}
			p=p->tag.next;
		}
}


Mtype  *change(Mtype  *hm)
{
		Mtype   *p,*q;
		int		t,w;
		w=hm->row;
		hm->row=hm->col;
		hm->col=w;
		p=hm->tag.next;
		while(p!=hm)
			{	q=p->right;
				while(p!=q)
				{
					t=q->row;
					q->row=q->col;
					q->col=t;
					q=q->right;
				}
				p=p->tag.next;
		}
	return hm;
}

void main()
{
	Mtype  *hm,*hm1;
	hm=creaemat();
	printf("\n 按行表输入矩阵:\n");
	prmatrow(hm);
	hm1=change(hm);
	printf("\n 转阵后:");
	printf("\n 按列表输入矩阵:\n");
	prmatrow(hm1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -