資料結構學習(二)

2021-07-10 08:28:09 字數 1367 閱讀 3661

寬度優先遍歷

寬度優先遍歷和廣度優先遍歷是兩種不同的搜尋的方法,不同之處主要在於廣度優先搜尋需要使用到佇列,鑑於上一節已經介紹過深度優先遍歷,這裡直接舉個例子,貼上**吧,哈哈,偷個小懶~~

對於圖中的節點,要進行廣度優先搜尋,過程如下:

假設先從a開始搜尋,將a加入佇列中;

直接從佇列中彈出a,搜尋a鄰接的所有頂點,加入佇列中並且列印出來,則:輸出:a->b->c;此時佇列中:b->c;

佇列再彈出b,此時將d加入佇列之中,並且列印出來;此時佇列:c->d;再彈出c,沒有鄰接的了,再彈出d,將e放入佇列,列印e;

佇列彈出e,隊列為空,搜尋結束。所以輸出為:a->b->c->d->e;

**貼上:

/**

* 頂點類

*/public class vertex

}/**

* 對列類

*/public class queue

//插入操作方法

public void insert(int in)

array[++rear] = in;

} //刪除操作方法

public int remove()

return array[front++];

} //判斷佇列是否為空

public boolean isempty() }

/** * 圖類

*/public class graph

} myqueue = new queue(max_verts_num);

} //增加邊的方法

public void addedge(int start, int end)

//增加頂點的方法

public void addvertex(char lab)

//顯示頂點的方法

public void displayvertex(int index)

//獲取與已知節點相鄰接的未訪問過的節點

public int getunvisitedadjvertex(int v1)

}return -1; //未找到

} //廣度優先遍歷核心演算法

public void bfs()

} }}

import org.junit.test;

public class testbfsmethod

}

到這裡,廣度優先搜尋已經完成,這是對無向圖的哦!!

資料結構學習(二)

資料結構學習 二 目錄 程式設計專練 1 判斷二維陣列中乙個數存在 2 求乙個數的次方 3 求逆序對總數 4 判斷棧彈出順序是否正確 5 順時針列印矩陣中的資料 1 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個...

資料結構學習(二)

什麼是演算法?演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序列,並且每條指令表示乙個或多個操作。演算法具有五個基本特性 輸入 輸出 有窮性 確定性和可行性。演算法設計的要求 正確性 可讀性 健壯性 時間效率高和儲存量低 演算法時間複雜度的定義 在進行演算法分析時,語句總的執行次數t...

資料結構學習二 棧

棧 限制插入和刪除操作只能在乙個位置上進行的表。對棧的基本操作有push 進棧 和pop 出棧 前者相當於插入,後者則是刪除。棧也叫作先進後出表。本文使用鍊錶實現棧。pragma once 鍊錶型別宣告 struct node pragma once include node.h 棧定義 m hea...