Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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_Algorithm_Graph - Fatal编程技术网

无数据结构的Java图形实现

无数据结构的Java图形实现,java,algorithm,graph,Java,Algorithm,Graph,我接受了三星的采访。我是一名应届毕业生,他们要求我编写一份应用程序,以便: 这是一个城市图,每个城市都可以到达另一个城市(所有顶点都可以到达彼此),如果移动(删除)某些顶点,它们将影响该图(它将被分割,一些顶点将永远无法到达彼此) 问题是,确定如果移除顶点,将断开图形(影响一个或多个顶点到达所有其他顶点) *不使用任何数据结构(无队列、无数组列表),只允许使用数组 输入如下: V=顶点数。 E=边数 输入文件中的边如下所示 12343648 1-2是1和2之间的1关系,它是双向的,因此是双向

我接受了三星的采访。我是一名应届毕业生,他们要求我编写一份应用程序,以便:

  • 这是一个城市图,每个城市都可以到达另一个城市(所有顶点都可以到达彼此),如果移动(删除)某些顶点,它们将影响该图(它将被分割,一些顶点将永远无法到达彼此)
问题是,确定如果移除顶点,将断开图形(影响一个或多个顶点到达所有其他顶点)

*不使用任何数据结构(无队列、无数组列表),只允许使用数组

输入如下:

V=顶点数。 E=边数

输入文件中的边如下所示

12343648

1-2是1和2之间的1关系,它是双向的,因此是双向的


这个问题怎么解决?你认为对于一个应届毕业生来说难吗

可以定义类顶点(或节点),并将两个顶点之间的边映射为两个实例之间的关联。这可能有点幼稚,但如果您只设置简单的操作(如删除),这将是可行的

public class Vertex {

    int number;
    Vertex[] vertices; // you have to look yourself if array is big enough

}
现在,每个顶点都有一个与其连接的顶点数组。如果在此顶点数组中添加顶点,然后将调用顶点添加到添加顶点的数组中,则可以实现双向:

vertex.add(new Vertex(1)); //internally, it will be looked if array is big enoguh and then the add method will do its work

...

public void add(Vertex v) {
    //add into vertices
    ...
    v.add(this);
}
要删除顶点,删除操作应删除其他顶点对象顶点数组中该顶点上的引用

更具概念性的解决方案可以是提供具有起点和终点顶点的第二类边


这可能会对您有所帮助。

您可以定义一个类顶点(或节点),并将两个顶点之间的边映射为两个实例之间的关联。这可能有点幼稚,但如果您只设置简单的操作(如删除),这将是可行的

public class Vertex {

    int number;
    Vertex[] vertices; // you have to look yourself if array is big enough

}
现在,每个顶点都有一个与其连接的顶点数组。如果在此顶点数组中添加顶点,然后将调用顶点添加到添加顶点的数组中,则可以实现双向:

vertex.add(new Vertex(1)); //internally, it will be looked if array is big enoguh and then the add method will do its work

...

public void add(Vertex v) {
    //add into vertices
    ...
    v.add(this);
}
要删除顶点,删除操作应删除其他顶点对象顶点数组中该顶点上的引用

更具概念性的解决方案可以是提供具有起点和终点顶点的第二类边


也许这对你有点帮助。

不使用任何数据结构
意味着没有数组?你能更好地解释边缘吗?我不遵循
“1-2是1及其双向性,所以两种方式都是”
您能澄清一下这是什么意思吗?我不理解“确定顶点,如果它们被移动,它将影响图形”,因为顶点是图形的一部分,图形总是受到影响。@jornverne OP的意思是:“如果该顶点被移除,它将导致两个不连通的图形”
不使用任何数据结构
意味着没有数组?您能更好地解释边缘吗?我不遵循
“1-2是1及其双向性,所以两种方式都是”
您能澄清一下这是什么意思吗?我不理解“确定顶点,如果它们被移动,它将影响图形”,因为顶点是图形的一部分,图形总是受到影响。@Jornverne OP的意思是:“如果该顶点被移除,它将导致两个不连通的图形”。不幸的是,他们不允许我创建任何类,所有的工作都是在程序的主体上,然后你可以使用二维数组作为相邻矩阵或关联矩阵。这是一种常见的图形表示法不幸的是,他们不允许我制作任何类,所有的工作都是在程序的主体上,然后你可以使用二维数组作为相邻矩阵或关联矩阵。这是一种常见的图形表示法