【问题标题】:An alternative to multiple linked arrays?多个链接数组的替代方案?
【发布时间】:2014-04-27 23:46:36
【问题描述】:

我想知道是否有更好的链接数组的方法?这不是一个特定于语言的问题,任何和所有想法都会很有趣,可以阅读更多内容。

基本上,我有一个节点数组。该数组链接到另一个具有唯一 ID 的数组。反过来,这个数组链接到一个带有 x 坐标的数组,而这个数组又链接到另一个带有 y 坐标的数组……你看,它变得非常复杂。

这是有道理的,我可以毫无问题地像这样使用它,但我不禁想到有更好的方法,并且比我更有技能的人可能能够提供帮助?

【问题讨论】:

  • 这些数组之间的关系是什么?比如是第一个x坐标,第一个节点的x坐标等等?我想我想了解的是为什么要在数组中表示这些然后链接它们?没有uniqueIdxCoordinateyCoordinate 的对象,然后拥有这些对象的数组就足够了吗?
  • Struct yourNode {... int ID; double x, y; };std::vector<yourNode> vecOfNodes;?
  • BTW java 和 c++ 标签在同一个问题中?在我看来,这很挑衅youtube.com/watch?v=Aa55RKWZxxI

标签: java c++ arrays algorithm


【解决方案1】:

面向对象编程为我们提供了更好的方法,C++ 和 Java 都是面向对象的语言。因此,与其将多个数组链接在一起(意味着每个数组中的索引 i 引用相关数据),我们可以这样做:

public class Node {
    int id;
    int x,y;

    static ArrayList<Node> allNodes;

   public Node(int idNum, int x, int y) {
      id = idNum;
      this.x = x;
      this.y = y;
  }

}

现在您的所有节点列表包含一个包含您需要的所有数据的数组。 例如,

 Node firstNode = Node.allNodes.get(0);
 //coordinates are firstNode.x, firstNode.y and id is firstNode.id

【讨论】:

  • 作为一个挑剔的人,我认为您的意思是结构化编程。用纯 C 或 Pascal 以及许多其他非 OO 语言做您所描述的事情是微不足道的。
  • 是的,把class换成struct,概念是一样的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
  • 2014-03-08
  • 1970-01-01
  • 2015-08-25
  • 1970-01-01
相关资源
最近更新 更多