📄 链式三元组.cpp
字号:
#include "iostream.h"
typedef int ElemType;
typedef struct mnode
{ int row; //行号
int col; //列号
ElemType e; //非零元素值
struct mnode *next; //地址指针
}MtrixNode;
MtrixNode *minit(int m,int n,int t) //m行n列的稀疏矩阵
{ MtrixNode *p;
p=new MtrixNode;
p->e=t;
p->row=m; p->col=n;
p->next=0;
return p;
}
void mcreate(MtrixNode *m)
{MtrixNode *p,*q;
cout<<m->row<<"行 "<< m->col<<"列 "<<m->e<<"个非零元素"<<endl;
cout<<"请按行、列、非零元素顺序输入:"<<endl;
q=m;
for(int i=0;i<m->e;i++)
{p=new MtrixNode;
cin>>p->row>>p->col>>p->e;
q->next=p;
p->next=0;
q=p;
}
}
void mprint(MtrixNode *m)
{
cout<<m->row<<"行 "<< m->col<<"列 "<<m->e<<"个非零元素"<<endl;
MtrixNode *p;
p=m->next;
while(p!=0)
{cout<<p->row<<" "<<p->col<<" "<<p->e<<endl; p=p->next;}
cout<<endl;
}
void matrixprint(MtrixNode *m)
{
MtrixNode *p;
p=m->next;
int i,j,flag=0;
for(i=1;i<=m->row;i++)
{
for(j=1;j<=m->col;j++)
{
if(p->row ==i && p->col==j)
{cout<<p->e<<" "; p=p->next; flag=1;}
if(!flag) cout<<"0"<<" ";
flag=0;
}
cout<<endl;
}
}
void main()
{
MtrixNode *M;
int i,j,k;
cout<<"请输入稀疏矩阵的行数、列数和非零元素个数:";cin>>i>>j>>k;
M=minit(i,j,k);
mcreate(M);
mprint(M);
cout<<endl;
matrixprint(M);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -