1樓:關翎憑邈
無向圖可以。有向圖的話,因為可以認為是多條遍歷路徑同時進行,對於一個已訪問過的結點無法判斷該節點或其後代結點中是否存在當前遍歷路徑上的結點;而對於深度優先遍歷,任何時候都只有一條遍歷路徑,可以通過標記區分出某個已訪問結點是在當前路徑上的結點還是不在當前路徑上的已回溯結點。
2樓:匿名使用者
這個根據圖的廣度和深度演算法就可以寫出來。詳細答案就是程式了。
3樓:匿名使用者
圖的遍歷:#include
#define infinity 0
#define max_vertex_num 20typedef int vrtype,infotype;
typedef char vertextype;
typedef struct arccellarccell, adjmatrix[max_vertex_num][max_vertex_num];
typedef structmgraph;
int locatevex(mgraph g,vertextype v)
}return 1; }void dispgraph(mgraph g)printf("\n");}} void dfs(mgraph g,int first,int mark) }void graphdfs(mgraph g)for(v=first;v 資料結構課程設計題目,圖的建立以及遍歷。 4樓: //圖的遍歷演算法程式 //圖的遍歷是指按某條搜尋路徑訪問圖中每個結點,使得每個結點均被訪問一次,而且僅被訪問一次。圖的遍歷有深度遍歷演算法和廣度遍歷演算法,程式如下: #include //#include #define infinity 32767#define max_vex 20 //最大頂點個數#define queue_size (max_vex+1) //佇列長度 using namespace std; bool *visited; //訪問標誌陣列//圖的鄰接矩陣儲存結構 typedef structgraph; //佇列類 class queue void enqueue(int e) void dequeue(int &e) public: int *base; int front; int rear; }; //圖g中查詢元素c的位置 int locate(graph g,char c)} //廣度優先遍歷 void bfs(graph g) } }} //主函式 void main() 輸出結果為(紅色為鍵盤輸入的資料,權值都置為1): 輸入頂點數和弧數:8 9 輸入8個頂點. 輸入頂點0:a 輸入頂點1:b 輸入頂點2:c 輸入頂點3:d 輸入頂點4:e 輸入頂點5:f 輸入頂點6:g 輸入頂點7:h 輸入9條弧. 輸入弧0:a b 1 輸入弧1:b d 1 輸入弧2:b e 1 輸入弧3:d h 1 輸入弧4:e h 1 輸入弧5:a c 1 輸入弧6:c f 1 輸入弧7:c g 1 輸入弧8:f g 1 廣度優先遍歷: a b d h e c f g深度優先遍歷: a b c d e f g h程式結束. 資料結構中關於圖的遍歷的時間複雜度問題 5樓: 深度優先搜尋的時間複雜度和廣度優先搜尋的時間複雜度是一樣的,鄰接矩陣儲存為o(n^2), 鄰接表儲存為o(n+e) "孤立定點"是什麼? 1 b 刪第一個結點,時間複雜度分別為o 1 和o n 兩個連結串列用相同型別變數,佔相同大專小空間屬 2 c 第h層和第h 1層都有可能有葉子結點 第h 1層有可能存在度為1的結點 3 a 參照b樹的插入演算法 4 c q是p的前驅結點 5 b 6 c 7 d tail a d,e,f head ... 資料結構從文字上面來看,為資料和結構兩部分。這樣就很容易聯絡到數專據結構的本質是屬一種對於資料結構花的知識。補充一個知識點,資料結構本質和離散數學有很密切的關係。離散數學是處理的是離散 非連續的 的資料,站在資料結構的觀點上來看,也可以理解是一種非連續資料的結構。資料結構該怎麼學啊?資料結構學好並不... include iostream.h include math.h include stdlib.h class calculator bool calculator isoperator char ch char calculator operate double left,char theta,...資料結構試題求解,資料結構試題 求答案
如何學習資料結構,資料結構該怎麼學啊?
資料結構實驗題,資料結構 實驗題 (高手請進)