0

我有一个二维整数数组 A(length m, width n) 保存在 MIPS 的地址中。在这个数组中,我想创建另一个数组 B,它只包含数组 A 中的非零值。从伪代码的角度来看,如何实现它?

我的想法是逐行遍历数组A(每行作为一维数组)。这意味着将数组 A 细分为 n 个一维数组,并使用 for 循环过滤掉非零元素。

这种方法听起来可信吗?

4

1 回答 1

0

二维数组实际上只是内存中的一维数组,所以如果你不关心按特定顺序循环,可以循环内存中的数组(m*n)以节省一些指令。否则,您可以按照您所说的逐行遍历。

我将使用的基本想法是让数组 B 模拟推入堆栈。这将在最后留下一些零,您将拥有非零“堆栈”的大小。每次向数组添加元素时,都会增加“堆栈”大小。

伪代码:

int b[m*n];

int b_size = 0;
for (int i=0; i<m*n; i++)
{
    if (a[i] != 0) 
    {
        b[b_size] = a[i];
        b_size++;
    }
}

希望您能从这里弄清楚如何将其转换为 MIPS。

于 2016-05-24T15:10:55.747 回答