如何在内存中存储分子?

4 c memory variables objective-c data-structures

我想将分子存储在记忆中.这些可以是简单的分子:

Methane (CH4)
C-H bond-length: 108.7 pm
H-H angle: 109 degrees
Run Code Online (Sandbox Code Playgroud)

但也有更复杂的分子,如对乙酰氨基酚(C8H9NO2):
扑热息痛

如何将分子存储在内存中,包括所有键长和角度?


将atom-structs存储在数组中的好主意?或者,还有更好的方法?

Tim*_*son 9

它看起来像某种图形数据结构:

  • 分子有一组原子
  • 原子通过债券联系在一起:
    • 债券可以是双重,单一或三重
    • 债券有一定的长度
    • 债券有一个角度
  • 这是一个循环图(例如,问题中的例子有一个交替的单键和双键环)
  • 它不是一个有向图(如果两个原子结合在一起,那么从哪个端接近键并不重要)

通常你存储的曲线图作为节点(原子)的阵列和边缘(键)的阵列.节点和边都是结构的指针.

节点(atom)将存储该元素.

边(键)将存储以下字段:

  • 一对指向节点的指针
  • 债券类型(双/单)
  • 键长和角度

因为它不是一个有向图,您的数据结构,将考虑A和B之间的边缘等同于B和A也就是说,对于一个给定的原子对之间的边缘,你会期望你的优势阵列包含边缘从A到B,从不从B到A.