Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的节点使用哪种数据结构?_Java_Data Structures_Nodes - Fatal编程技术网

Java中的节点使用哪种数据结构?

Java中的节点使用哪种数据结构?,java,data-structures,nodes,Java,Data Structures,Nodes,我想创建一个类节点、类边和类图。在类节点中,它必须以一些数字作为输入来创建节点。另外,我希望这个类有一些方法,可以在其中更改节点的不同属性。此外,它还必须包含通过边缘从相邻节点发送和接收信息的方法。这些信息接收和发送方法应具有控制信息流的规定 我不确定节点使用哪种数据结构来满足这些要求。创建自己的类节点 节点只是一个对象。给它一些属性(例如,您可能需要权重和值) 公共类节点{ 私人双倍重量; 私有字符串值; 私有数组列表边; //二传手和接球手 } 创建一个类节点,其中包含对其他节点的引用列表(

我想创建一个类节点、类边和类图。在类节点中,它必须以一些数字作为输入来创建节点。另外,我希望这个类有一些方法,可以在其中更改节点的不同属性。此外,它还必须包含通过边缘从相邻节点发送和接收信息的方法。这些信息接收和发送方法应具有控制信息流的规定


我不确定节点使用哪种数据结构来满足这些要求。

创建自己的类节点

节点只是一个对象。给它一些属性(例如,您可能需要权重和值)

公共类节点{
私人双倍重量;
私有字符串值;
私有数组列表边;
//二传手和接球手
}

创建一个类节点,其中包含对其他节点的引用列表(在有向图中,这一点特别有用)。边实际上不是要创建的“东西”,它更像是一个连接。

实现图形的两种最常见的方法是使用邻接矩阵或邻接列表

矩阵方法涉及使用2d数组通过询问
节点[i][j]
是否为真来确定节点
i
和节点
j
是否连接。浪费空间,但有固定的时间访问

邻接列表跟踪当前节点的每个相邻节点,这节省了空间但花费了线性时间,以便确定节点是否连接到它

这些文章对此进行了更好的解释:


创建一个具有所需所有属性的
类节点Ex.如果要为
二叉树创建
节点
,则
节点类可以是这样的

  class Node
     {
        Node left;
        Node right;
        int info;
        Node(int value)
        {
         this.info = value;
        }
        //Add more attributes or functionalities
     }

这是如何创建
节点类
的一种表示形式。根据您的需求,表示可能会更改,但基本概念保持不变。

使用所述方法和所需属性创建一个类。您需要在图形中存储多个节点。通常,您希望能够从图中删除/添加节点,因此如果您的节点类命名为node,则需要像LinkedList这样的动态数据结构。您能建议我实现吗?比如一个如何编写程序的例子?权重是否表示“它连接了多少个节点”?另外,我可以使用Scanner从输入中接受节点数吗?变量信息代表什么?当您创建
节点时,您需要在其中存储一些信息,对吗?变量
info
就是为了这个目的。如果我可以补充一下@pratek所说的,很多时候如果你使用的是二叉树,那么你不仅有“左节点”和“右节点”,还有一个“节点父节点”,这样遍历就可以像迭代器一样备份树。再一次,仅供参考
  class Node
     {
        Node left;
        Node right;
        int info;
        Node(int value)
        {
         this.info = value;
        }
        //Add more attributes or functionalities
     }