用鄰接表表示圖的廣度優先搜尋時的儲存結構,通常採用()結構來實現演算法

2021-07-12 17:38:46 字數 3009 閱讀 8148

1樓:茲斬鞘

b。廣度優先搜尋相當於層次遍歷,深度優先搜尋相當於先序優先遍歷,所以答案選擇b。

鄰接表表示的圖的廣度優先搜尋一般採用佇列結構來實現演算法:

首先選擇乙個起始節點,把它的臨界表中節點加入到佇列中,每次取出隊首元素,然後把該元素的鄰接表中的節點加入到佇列末尾,標記已遍歷過的節點,直到佇列中沒有節點為止,一般棧用於深度優先搜尋,佇列用於廣度優先搜尋。

2樓:匿名使用者

b廣度優先搜尋使用佇列(queue)來實現,整個過程也可以看做乙個倒立的樹形:

1、把根節點放到佇列的末尾。

2、每次從佇列的頭部取出乙個元素,檢視這個元素所有的下一級元素,把它們放到佇列的末尾。並把這個元素記為它下一級元素的前驅。

3、找到所要找的元素時結束程式。

4、如果遍歷整個樹還沒有找到,結束程式。

擴充套件資料

佇列的基本運算

1、初始化佇列:init_queue(q),初始條件:隊q不存在。操作結果:構造了乙個空隊;

2、入隊操作:in_queue(q,x),初始條件:隊q存在。操作結果:對已存在的佇列q,插入乙個元素x到隊尾,隊發生變化;

3、出隊操作:out_queue(q,x),初始條件:隊q存在且非空,操作結果:刪除隊首元素,並返回其值,隊發生變化;

4、讀隊頭元素:front_queue(q,x),初始條件:隊q存在且非空,操作結果:讀隊頭元素,並返回其值,隊不變;

5、判隊空操作:empty_queue(q),初始條件:隊q存在,操作結果:若q為空隊則返回為1,否則返回為0。

3樓:匿名使用者

b鄰接表表示的圖的廣度優先搜尋一般採用佇列結構來實現演算法:

首先選擇乙個起始節點,把它的臨界表中節點加入到佇列中,每次取出隊首元素,然後把該元素的鄰接表中的節點加入到佇列末尾,標記已遍歷過的節點,直到佇列中沒有節點為止

一般棧用於深度優先搜尋,佇列用於廣度優先搜尋

用鄰接表實現該圖的廣度優先搜尋遍歷(實驗報告)

4樓:百度文庫精選

內容來自使用者:瓜瓜小人魚

實驗報告

用鄰接表實現該圖的廣度優先搜尋遍歷

一﹑實驗目的

1﹒掌握圖的基本概念和鄰接表儲存結構。

2﹒掌握圖的鄰接表儲存結構的演算法實現。

3﹒掌握圖在鄰接表儲存結構上遍歷演算法的實現。

二﹑實驗內容

給定圖如下,用鄰接表實現該圖的廣度優先搜尋遍歷。

三﹑實驗與演算法分析

先定義圖的鄰接表資料,建立該圖的鄰接表,然後在用子函式寫出廣度優先搜尋遍歷的遍歷演算法,最後用主函式呼叫它們。

實現廣度優先搜尋遍歷可以利用佇列的原理。利用佇列先進先出的特性,並設定訪問標誌實現連通圖的廣度優先搜尋遍歷。

廣度優先搜尋遍歷類似於樹的按層次遍歷,對於用鄰接表做儲存結構的圖,從某個給定頂點出發的圖的遍歷得到的訪問結點頂點次序,隨建立的鄰接表的不同而可能不同。

將每個結點的邊用乙個單邊表鏈結起來組成乙個整體。所有頭結點可看成乙個一維陣列,即鄰接表所有連結串列中結點數目的一半為圖中邊數。佔用的儲存單元數目為n+2e。

抽象演算法描述:

(1)訪問頂點i,並將其訪問標誌置為已被訪問,即visited[i]=true。

(2)依次訪問與標點i有邊相連的所有頂點w1,w2------wt。

(3)再按次序訪問與w1,w2------wt有邊相連且未曾訪問過的頂點。

(4)依此類推,直到圖中所有頂點都被訪問完。};visited[p->data]=true;

用鄰接表表示圖進行深度優先遍歷時,通常採用()來實現演算法

5樓:痴情鐲

用鄰接表表示圖進行深度優先遍歷時,通常採用棧來實現演算法。

鄰接表,儲存方法跟樹的孩子鏈表示法相類似,是一種順序分配和鏈式分配相結合的儲存結構。如這個表頭結點所對應的頂點存在相鄰頂點,則把相鄰頂點依次存放於表頭結點所指向的單向連結串列中。

對於無向圖來說,使用鄰接表進行儲存也會出現資料冗餘,表頭結點a所指連結串列中存在乙個指向c的表結點的同時,表頭結點c所指連結串列也會存在乙個指向a的表結點。

鄰接表相似類:

圖的鄰接表儲存方法跟樹的孩子鏈表示法相類似,是一種順序分配和鏈式分配相結合的儲存結構。如這個表頭結點所對應的頂點存在相鄰頂點,則把相鄰頂點依次存放於表頭結點所指向的單向連結串列中。如詞條概念圖所示,表結點存放的是鄰接頂點在陣列中的索引。

對於無向圖來說,使用鄰接表進行儲存也會出現資料冗餘,表頭結點a所指連結串列中存在乙個指向c的表結點的同時,表頭結點c所指連結串列也會存在乙個指向a的表結點。

鄰接表是圖的一種最主要儲存結構,用來描述圖上的每乙個點。對圖的每個頂點建立乙個容器(n個頂點建立n個容器),第i個容器中的結點包含頂點vi的所有鄰接頂點。實際上我們常用的鄰接矩陣就是一種未離散化每個點的邊集的鄰接表。

6樓:

使用棧來實現演算法。

用鄰接表表示圖進行深度優先遍歷時,通常採用棧來實現演算法,廣度遍歷使用佇列。

擴充套件材料:

深度優先遍歷:類似與樹的前序遍歷。從圖中的某個頂點v出發,訪問此頂點,然後從v的未被訪問到的鄰接點進行遍歷,直到圖中所有和v有路徑相通的頂點都被訪問到

注:優先訪問外層節點,訪問到無新頂點時,會進行回退,訪問未被訪問過的分支頂點。

廣度優先遍歷:類似於樹的層序遍歷。從圖中的某個頂點w出發,讓頂點w入隊,然後頂點w再出隊,並讓所有和頂點w相連的頂點入隊,然後再出隊乙個頂點t,並讓所有和t相連但未被訪問過的頂點入隊……由此迴圈,指定圖中所有元素都出隊。

知網**-資料結構中圖的遍歷演算法研究

7樓:昕痕

鄰接表圖的深度優先,思想是以深度因素為優先遍歷,(因此可以檢測是否圖為連通圖),可以想像成你從上往下走迷宮,走不動了就從根再換條路走,演算法實現方式就與這種思想匹配,使用遞迴(棧)來完成遍歷。具體為:

void dfstra(graph t,bool visit[n])

用分數表示下面各圖的塗色部分圖,用分數表示下面各圖的塗色部分圖1圖2圖

圖1,此正方形被bai平均分成du9份,其中塗色部分zhi為5份,則塗色部分佔整 dao個正方形的5 9 圖2,圖內中共有容2個相同的圓,每個被平均分成4份,其中第乙個圓全部塗色,第二個圓塗色部分為3份,佔這個圓的3 4 則全部塗色部分佔每個圓的13 4 圖3,此三角形被平均分成9份,塗色部分為9份...

以下最能表示劇烈運動時呼吸頻率的圖是A

d試題分析 每分鐘呼吸的次數稱為呼吸頻率 識圖時看單位時間內達到峰值的次數,即單位時間內呼吸的次數 呼吸深度主要看呼吸時肺容量的最大值和最小值的差 從曲線a可以看出,此人20秒內呼吸了近6次,1分鐘為60秒,故此人每分鐘呼吸了小於18次,故此人的呼吸頻率小於18次 分,呼吸深度在2 3之間,小於1 ...

能表示人大量喝水時胃液的pH變化的圖象是

a人體胃液在正常情況下顯酸性ph 7,從圖a c選擇,然後根據溶液稀釋時不論加水再多,溶液原來性質不變即仍為酸性而選a。下圖中的4條曲線,能表示人體大量喝水時,胃液ph變化的是 a胃液ph小於7,喝大量的水後,胃液中的胃酸會被稀釋,酸性減弱,ph增大,但不可能大於7 即變成了鹼性 只能越來越接近於7...