三角阵列

Her*_*c11 0 c arrays

我想在C中构造一个2d数组,其中每行将具有不同数量的元素.具体来说,我想构建一个三角形7x6阵列.为了节省内存,我想避免存储零,如下例所示.

                               1 0 0 0 0 0 0
                               1 1 0 0 0 0 0
                                     ...
                               1 1 1 1 1 1 1   
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Tim*_*lds 18

公式

这个索引系统不会起作用吗?

0
1 2
3 4 5
6 7 8 9
...
Run Code Online (Sandbox Code Playgroud)

只需将数据存储在一维数组中,使用此映射到三角矩阵/数组.

双射

一维零基索引k和二维零基行i和列jk = i(i+1)/2 + j(何处j <= i)相同.

注意

以上是针对下三角形方阵/阵列.你可以做一些非常相似的事情

  • 上三角形方阵/阵列
    • 简单地交换 ij
  • 矩形的下三角形或上三角形矩阵/阵列
    • 这有点棘手(需要通过案例推理),但是可以实现将一维数组(实现)映射到概念二维数组(视图)的相同想法