queue.remove()和bfs需要java帮助

queue.remove()和bfs需要java帮助,java,breadth-first-search,Java,Breadth First Search,您好,我需要帮助了解bfs算法中我将元素设置为queue.remove()的部分,以及如何使用值设置元素。如果有人能为我解释一下,那会很有帮助。谢谢 class bfs { private Queue<Integer> queue; public bfs() { queue = new LinkedList<Integer>(); } public void bfs(int adjacency_matrix[][] , int source) {

您好,我需要帮助了解bfs算法中我将元素设置为queue.remove()的部分,以及如何使用值设置元素。如果有人能为我解释一下,那会很有帮助。谢谢

 class bfs
  {
private Queue<Integer> queue;
public bfs()
{
    queue = new LinkedList<Integer>();
}

public void bfs(int adjacency_matrix[][] , int source)
{
    int number_of_nodes = adjacency_matrix[source].length-1;

    int[] visited = new int[number_of_nodes +1];
    int i, element;
    visited[source] = 1;
    queue.add(source);

    while(!queue.isEmpty())
    {
        element =queue.remove();
        i = element;
        System.out.println(i+"\t");
        while(i<=number_of_nodes)
        {
            if(adjacency_matrix[element][i] == 1 && visited[i] == 0)
            {
                queue.add(i);
                visited[i] = 1;

            }
            i++;


        }}

    }
 }
bfs类
{
专用队列;
公共bfs()
{
队列=新的LinkedList();
}
公共void bfs(整数邻接矩阵[][],整数源)
{
节点的整数=邻接矩阵[源].length-1;
int[]已访问=新int[节点的数量+1];
int i,元素;
访问[来源]=1;
queue.add(源);
而(!queue.isEmpty())
{
element=queue.remove();
i=元素;
System.out.println(i+“\t”);

虽然(i队列是一种先进先出的数据结构,但它有助于维护使用bfs在图中搜索的节点序列-因为在bfs中,被访问节点的直接邻居(我们称之为节点a)总是先排队,因此它们将被排队(在您的例子中为queue.remove())早于不是节点A直接邻居的节点

在您的代码中,邻接矩阵是一个2d方形数组,用于保持相邻关系。邻接矩阵[i][j]==1表示节点j是节点i的邻居。

element=queue.remove();-提供要访问的当前节点

队列。添加(i);将元素的邻居添加到队列中,以便以后可以访问它

您可以使用以下示例将其可视化:


你能提供一个背景信息吗?这有什么用,为什么要这样做,在这种情况下问题到底出在哪里?为了回答编码问题,这里,你有一个可能工作的算法,我没有试着让它运行,因为我真的不明白需要什么,因为你没有给出任何…很抱歉没有更清楚。这算法工作。它读取邻接矩阵和所有内容。我不理解的是element=queue.remove()是如何工作的在代码中工作,比如如何为其赋值。从Javadoc:
检索并删除此队列的头。此方法与轮询的不同之处在于,如果此队列为空,它会引发异常。
因此基本上元素在被删除的队列头中读取。因此元素和我是相同的,直到我进入while循环并不断递增,这会更新访问的数据,等等。因此,如果在这种情况下,队列的头是source,那么source将=元素,我首先递增,然后转到条件并运行它?正确吗?因此,基本上,元素读取的是bein的队列头g已删除。所以元素和我是相同的,直到我进入while循环并不断递增,从而更新访问的,等等。因此,如果在这种情况下,队列的头是source,那么source将=元素,并且我首先会递增,然后转到条件并运行它?正确吗?老实说,我感觉有点不对劲很遗憾显示了图表和表格。为什么不在我给你的迭代表中添加一列来跟踪我是如何更新的?我建议你阅读bfs Wikipedia来理解bfs的概念。