稀疏矩阵加法(c++)while循环的退出条件是什么?

1、通过键盘输入两个稀疏矩阵的三元组a,b

(输入信息包括稀疏矩阵的行数、列数、非0元素个数以及按行优先次序输入每个非零元素行号、列号以及元素值)

2、计算c=a+b,并以三元组形式输出(输出格式如下图);

问号部分填啥?代码运行起来哪里有问题?是否解决了问题? 你还有其他优质的解答吗?请积极评论和指出我代码不足之处!

你的代码在哪呢?

#include
using namespace std;
const int maxSize = 100;
struct element
{
int h, l, z;
};

struct SM
{
int hang=0, lie=0, sl=0;
element data[maxSize];//稀疏矩阵的体量
SM()
{

}
SM(int hang, int lie, int sl)
{
    this->hang = hang;
    this->lie = lie;
    this->sl = sl;
}
SM(int hang, int lie)
{
    this->hang = hang;
    this->lie = lie;
}

};

int main()
{
cout << "先创造两个稀疏矩阵:\t" << endl;
int m, n, s1,s2;//稀疏矩阵的行和列以及非零个数
cin >> m >> n >> s1>>s2;
if ((s1 > m * n)&&(s2 > m * n))//行列乘积的总个数不可能小于非零个数
{
cin >> m >> n >> s1>>s2;
}

SM a(m, n, s1), b(m, n, s2), c(m, n);
for(int i = 0; i < s1; i++)
{

    cin >> a.data[i].h >> a.data[i].l >> a.data[i].z;
    
}
for (int j = 0; j < s2; j++)
{

    cin >> b.data[j].h >> b.data[j].l >> b.data[j].z;
    
}

while (?)
{
int i = 0, j = 0;
if (a.data[i].h < b.data[j].h)
{
    c.data[c.sl].h = a.data[i].h;
    c.data[c.sl].l = a.data[i].l;
    c.data[c.sl].z = a.data[i].z;
    c.sl++;
    i++;
}
else if (a.data[i].h == b.data[j].h)
{
if (a.data[i].l <b.data[j].l)
{
    
    c.data[c.sl].h = a.data[i].h;
    c.data[c.sl].l = a.data[i].l;
    c.data[c.sl].z = a.data[i].z;
    c.sl++;
    i++;
}
else if(a.data[i].l > b.data[j].l)
{
    
    c.data[c.sl].h = b.data[i].h;
    c.data[c.sl].l = b.data[i].l;
    c.data[c.sl].z = b.data[i].z;
    c.sl++;
    i++;
}
else
{
    
    c.data[c.sl].h = b.data[j].h;
    c.data[c.sl].l = b.data[j].l;
    c.data[c.sl].z = a.data[i].z+b.data[j].z;
    c.sl++;
    i++;
    j++;
}
}
else
{
c.data[c.sl].h = b.data[i].h;
c.data[c.sl].l = b.data[i].l;
c.data[c.sl].z = b.data[i].z;
c.sl++;
j++;
}
}
cout << c.hang << " " << c.lie << " " << c.sl << " \t" << endl;
for (int i = 0; i < c.sl; i++)
{
    cout << c.data[i].h << " " << c.data[i].l << " " << c.data[i].z << "\t" << endl;
}

}