【问题标题】:How do you properly store structures in C如何在 C 中正确存储结构
【发布时间】:2021-11-27 02:50:56
【问题描述】:

正如标题所示,我试图在 C 中存储一个结构,但想找到最有效的方法。答案当然取决于存储的数据对吗?

我知道链表和双向链表,但我正在使用元素周期表,它包含 118 个元素,每个元素有 29 个唯一字段,我不知道链表是​​否必要。目前,我已经测试了将一些元素和 4 个特征存储到结构数组中。有整数、浮点数和字符串。

element[0] - atomicNumber: 1    element: Hydrogen       symbol: H       atomicMass: 1.0070
element[1] - atomicNumber: 2    element: Helium         symbol: He      atomicMass: 4.0020
element[2] - atomicNumber: 3    element: Lithium        symbol: Li      atomicMass: 6.9410
element[3] - atomicNumber: 4    element: Beryllium      symbol: Be      atomicMass: 9.0120

那么,有没有人有任何见解可以帮助指导我?

【问题讨论】:

  • 您尝试解决的问题远比您处理的数据类型更重要。话虽如此,这仍然很可能是一个意见问题。
  • “最高效”是为了什么?内存使用情况?复杂?插入?删除?抬头?计算通常涉及权衡,因此在做出设计决策时需要指定确切的要求。
  • 你打算如何处理这些数据?您想知道链表是​​否甚至是必要的,但到目前为止,您比我们处于更好的判断位置。另一方面,无论如何,链表很少是答案。
  • 如果您要从集合中添加和删除项目,链接列表会很有用。但是如果它是一个固定大小的集合,那么数组通常是合适的。
  • 您甚至可以考虑使用小型数据库,例如SQLite

标签: c data-structures struct


【解决方案1】:

这取决于存储的数据,也取决于您想要使用它的方式。 一个通用指针:如果您确切知道会有多少元素,那么固定大小的数组通常是个好主意。

struct Element {
    int atomicNr;
    char symbol;
    // etc
};

Element elements[] = {
    {
       .atomicNr = 1,
       .symbol = 'H', 
    }, 
    // etc
};

您甚至可以摆脱 atomicNr 并为此使用数组索引。

【讨论】:

  • 谢谢伍兹。这就是我目前正在做的事情。如果你不能告诉我我是一个新手/初学者,甚至不知道要问什么问题或如何思考创造有用的东西。
猜你喜欢
  • 2018-04-27
  • 1970-01-01
  • 2021-06-25
  • 2011-07-13
  • 1970-01-01
  • 1970-01-01
  • 2020-03-08
  • 2022-06-23
  • 2012-11-25
相关资源
最近更新 更多