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

📄 十字链表.cpp

📁 矩阵的一些算法应用
💻 CPP
字号:
#include "iostream.h"
typedef int ElemType;
typedef struct Lnode 
{  int i,j;
ElemType e;
struct Lnode *right,*down;
}MLnode;
typedef struct {
	MLnode **rhead,**chead;
	int m,n,t;
}CrossList;


void createM(CrossList &M)
{int i,j,e,k,l=1;
MLnode *p,*q;
//	if(M) delete M;
	cout<<"请输入矩阵的行数、列数和非零元素个数:";
	cin>>M.m>>M.n>>M.t;
	M.rhead=(MLnode **) new MLnode[M.m+1];
for(k=0;k<=M.m;k++)
 M.rhead[k]=0;
	M.chead=(MLnode **) new MLnode[M.n+1];
for(k=0;k<=M.n;k++)
 M.chead[k]=0;

	cout<<"请输入行、列、非零元素值"<<endl;
  while(l<=M.t)
	{	cin>>i>>j>>e;l++;
		p=new MLnode;
	p->i=i;p->j=j;p->e=e;p->down=0;
	if(M.rhead[i]==0||M.rhead[i]->j>j) {p->right=M.rhead[i];M.rhead[i]->right=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]==0||M.chead[j]->i>i) {p->down=M.chead[j];M.chead[j]->down =p;}
	else
	{for(q=M.chead[j];(q->down) && q->down->i<i;q=q->down);
	p->down=q->down;q->down=p;}
		}

}
void rprint(CrossList m)
{
MLnode *p;
cout<<"行  列  值"<<endl;

for(int k=0;k<m.m;k++)
{p=m.rhead[k];
  while(p!=0) 
  {cout<<p->i <<"   "<<p->j <<"   "<<p->e <<endl;p=p->right ;}
}
}
void cprint(CrossList m)
{
MLnode *p;
cout<<"行  列  值"<<endl;
for(int k=0;k<m.n;k++)
{p=m.chead[k];
  while(p!=0) 
  {cout<<p->i <<"   "<<p->j <<"   "<<p->e <<endl;p=p->down ;}
}
}

void main()
{CrossList m;
createM(m);
cout<<endl;
rprint(m);
cout<<endl;
cprint(m);

}

⌨️ 快捷键说明

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