C,稀疏2d矩阵的数据结构问题

时间:2011-03-25 04:59:00

标签: c sparse-matrix

我想知道如果我知道该元素将是一个短类型,我可以用于稀疏二维矩阵的数据结构。我打算使用链表,但元素类型(短)有什么区别?如果元素将是整数类型而不是短类型,那么它将如何更改数据结构呢?

2 个答案:

答案 0 :(得分:0)

在纯C中,您可以使用指针存储不同类型的数据,并注意避免内存泄漏。 像这样:

struct NODE
{
    void *data;
    struct NODE *next;
};

考虑使用C ++模板怎么样?

template<typename T>
struct NODE
{
    T data;
    struct<T> *next;
};

答案 1 :(得分:0)

的矢量
struct {
  int x;
  int y;
  short value;
}

该值可能最终会使用4字节(结构成员通常填充到32位边界)如果你真的缺少空间而且x,y coords是有限的,你可以把整个东西打包到一个位。 64bit int

如果要添加和删除点,那么可能存在列表的情况,但通常稀疏数组具有固定的点集或查找占主导地位,并且在添加点之后值得通过X,Y求助它们。

如果你确实需要添加大量的点并且仍然希望通过x,y快速访问,那么树可能值得一看