我想知道如果我知道该元素将是一个短类型,我可以用于稀疏二维矩阵的数据结构。我打算使用链表,但元素类型(短)有什么区别?如果元素将是整数类型而不是短类型,那么它将如何更改数据结构呢?
答案 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快速访问,那么树可能值得一看