题目:
三元组顺序表表示的稀疏矩阵转置。
输入格式:输入第1行为矩阵行数m、列数n及非零元素个数t。按行优先顺序依次输入t行,每行3个数,分别表示非零元素的行标、列标和值。
输出格式:输出转置后的三元组顺序表结果,每行输出非零元素的行标、列标和值,行标、列标和值之间用空格分隔,共t行。
输入样例:
-
输出样例:
-
思路分析:
这一题较为简单,我才用了使用空间复杂度换时间的方法,通过开出一个指针数组,完成了行优先向列优先的转化。
代码展示:
#includeiostream#includemalloc.husingnamespacestd;#defineMAXSIZE15typedefstructvectr{inti;intj;intdata;}vectr;intmain(){vectr*p[MAXSIZE][MAXSIZE]={NULL};vectr*tem=(vectr*)malloc(sizeof(vectr));introw,col,num;cinrowcolnum;intcont;while(num--){cont=0;cintem-item-jtem-data;for(inti=0;iMAXSIZE;i++)if(p[tem-j]!=NULL)cont++;//通过cont判断存放位置减少之后的判断次数p[tem-j][cont]=tem;tem=(vectr*)malloc(sizeof(vectr));}//存入完毕for(inti=0;iMAXSIZE;i++)for(intj=0;jMAXSIZE;j++){if(p[j]==NULL)break;//空则后面皆是空,跳出elsecoutp[j]-j"p[j]-i"p[j]-dataendl;}//输出完毕return0;}预览时标签不可点收录于话题#个上一篇下一篇