中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      通過圖的鄰接矩陣實現(xiàn)圖的搜索實現(xiàn)(一)

      時間:2024-10-12 10:51:37 通信工程畢業(yè)論文 我要投稿
      • 相關(guān)推薦

      通過圖的鄰接矩陣實現(xiàn)圖的搜索實現(xiàn)(一)

      摘 要  本課程設(shè)計主要解決圖的搜索實現(xiàn),通過圖的鄰接矩陣實現(xiàn)深度優(yōu)先搜索和廣度優(yōu)先搜索。圖是一種較線形表和樹更復(fù)雜的數(shù)據(jù)結(jié)構(gòu),其應(yīng)用極為廣泛,目前已滲入到語言學(xué),邏輯學(xué),物理,化學(xué)以及計算機科學(xué)等諸多領(lǐng)域中。在本課程設(shè)計中,系統(tǒng)開發(fā)平臺為Windows xp,程序設(shè)計設(shè)計語言主要采用C語言,程序運行平臺為Windows 2000/XP。程序開始后,通過輸入各結(jié)點與邊的相關(guān)數(shù)據(jù),可以得出相應(yīng)的深度優(yōu)先和廣度優(yōu)先搜索結(jié)果。

      關(guān)鍵詞  程序設(shè)計;C語言;圖的鄰接矩陣;圖的深度優(yōu)先搜索、廣度優(yōu)先搜索
       
      1 引  言
      圖是一種較復(fù)雜的數(shù)據(jù)結(jié)構(gòu),圖的搜索在圖書索引,城市道路建設(shè),人工智能等領(lǐng)域中發(fā)揮著重要作用。圖的搜索有深度優(yōu)先搜索和廣度優(yōu)先搜索,我們可以通過圖的鄰接矩陣或鄰接表實現(xiàn)圖的這兩種搜索。
      本次程序設(shè)計我們通過C語言編寫程序?qū)崿F(xiàn)圖的搜索。在編寫過程中我們將圖定義為鄰接矩陣類型,通過深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷分別實現(xiàn)圖的搜索。
          我們學(xué)習(xí)兩年的有關(guān)C語言和數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識,而課程設(shè)計是將我們把所學(xué)的理論和生產(chǎn)實踐相結(jié)合的重要環(huán)節(jié), 通過這次課程設(shè)計,可以使我們所學(xué)的專業(yè)技能得到鞏固、擴大、深入和系統(tǒng)化;培養(yǎng)綜合運用所學(xué)知識解決圖的搜索的能力,初步掌握數(shù)據(jù)結(jié)構(gòu)程序設(shè)計的方法和步驟;使我們進一步提高編寫程序的效率;提高我們獨立鉆研問題的能力,培養(yǎng)嚴(yán)肅認(rèn)真,實事求是,刻苦鉆研的工作作風(fēng)。

      2 開發(fā)工具介紹
      C 語言是1972年由美國的Dennis Ritchie設(shè)計發(fā)明的, 并首次在UNIX操作系統(tǒng)DEC PDP-11 計算機上使用。 它由早期的編程語言 BCPL( Basic Combind Programming Language) 發(fā)展演變而來。在1970年, AT&T 貝爾實驗室的 Ken Thompson根據(jù)BCPL語言設(shè)計出較先進的并取名為 B的語言, 最后導(dǎo)了C 語言的問世。 隨著微型計算機的日益普及, 出現(xiàn)了許多C語言版本。由于沒有統(tǒng)一的標(biāo)準(zhǔn), 使得這些C 語言之間出現(xiàn)了一些不一致的地方。為了改變這種情況, 美國國家標(biāo)準(zhǔn)研究所(ANSI)為C 語言制定了一套ANSI標(biāo)準(zhǔn),成為現(xiàn)行的C語言標(biāo)準(zhǔn)。
      C語言具有強大的功能,它具有以下特點:
      1. C是中級語言
      它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。C 語言可以象匯編語言一樣對位、字節(jié)和地址進行操作, 而這三者是計算機最基本的工作單元。
      2. C是結(jié)構(gòu)式語言
      結(jié)構(gòu)式語言的顯著特點是代碼及數(shù)據(jù)的分隔化, 即程序的各個部分除了必要的信息交流外彼此獨立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦? 便于使用、維護以及調(diào)試。C
      語言是以函數(shù)形式提供給用戶的, 這些函數(shù)可方便的調(diào)用, 并具有多種循環(huán)、條件語句控制程序流向, 從而使程序完全結(jié)構(gòu)化。
      3. C語言功能齊全
      C 語言具有各種各樣的數(shù)據(jù)類型, 并引入了指針概念, 可使程序效率更高。另外C 語言也具有強大的圖形功能,
      支持多種顯示器和驅(qū)動器。而且計算功能、邏輯判斷功能也比較強大, 可以實現(xiàn)決策目的。
      4. C語言適用范圍大
      C 語言還有一個突出的優(yōu)點就是適合于多種操作系統(tǒng), 如DOS、UNIX,也適用于多種機型。
       3 相關(guān)知識
        
       圖的概念:圖是一種較線形表和樹更復(fù)雜的數(shù)據(jù)結(jié)構(gòu),是一種數(shù)據(jù)元素間為多對多關(guān)系的數(shù)據(jù)結(jié)構(gòu),加上一組基本操作構(gòu)成的抽象數(shù)據(jù)類型,圖作為一種非線性數(shù)據(jù)結(jié)構(gòu),被廣泛應(yīng)用于多個技術(shù)領(lǐng)域,諸如系統(tǒng)工程、化學(xué)分析、統(tǒng)計力學(xué)、遺傳學(xué)、控制論、計算機的人工智能、編譯系統(tǒng)等領(lǐng)域。
       圖的基本操作:創(chuàng)建、插入、刪除、查找等。
       圖的幾種存儲結(jié)構(gòu)類型:圖的鄰接矩陣表示法,圖的鄰接表表示法
       深度優(yōu)先搜索(DFS):a、深度優(yōu)先搜索類似于樹的前序遍歷,也是一遇到頂點就進行訪問。其特點是盡可能先對縱深方向進行搜索,因此很容易用遞歸算法實現(xiàn)。如果將遍歷過程中走過的邊連接起來,即可得到深度優(yōu)先遍歷生成樹。b、深度優(yōu)先搜索遍歷圖的算法:首先訪問指定的起始頂點v0,從v0出發(fā),訪問v0的一個未被訪問過的鄰接頂點w1,再從w1出發(fā),訪問w1的一個未被訪問過的頂點w2,然后從w2出發(fā),訪問w2的一個未被訪問過的鄰接頂點w3。依次類推,直到一個所有鄰接頂點都被訪問過為止。
       廣度優(yōu)先搜索(BFS):廣度優(yōu)先搜索類似于樹的按層次遍歷。首先訪問指定的起始點v0,從v0出發(fā),訪問v0的所有未被訪問過的鄰接頂點w1,w2,… wk,然后再依次從w1,w2,… wk出發(fā),訪問它們的所有未被訪問過的鄰接頂點,依次類推,直到圖中所有未被訪問過的鄰接頂點都被訪問過為止。廣度優(yōu)先遍歷的特點是盡可能進行橫向搜索,即最先訪問的頂點其鄰接點也被先訪問。因此,借助一個隊列來保存已被訪問過的頂點序列。訪問一個頂點vi時(出隊),同時將vi相鄰的其余結(jié)點入隊。每個頂點只能入隊一次。

                           

       

       

       

       

       

      4 程序的設(shè)計與實現(xiàn)
      4.1 程序相關(guān)算法偽代碼[3]
       圖的深度優(yōu)先搜索算法偽代碼:
       DFS(v)//訪問由v到達的所有頂點
       1.  Visited(v)=1;
       2.  for鄰接于v的每個頂點w  do
       3.   if Visited(w)=0 then
       4.      DFS(w);
       5.    endif
       6.  endfor  
       7.end DFS
       
      圖的廣度優(yōu)先搜索算法偽代碼:
       BFS(v) //寬度優(yōu)先搜索G,從頂點v開始執(zhí)行
           // 所有已搜索的頂點i都標(biāo)記為Visited(i)=1.
           //Visited的初始分量值全為0
       1. Visited(v)=1; u=v;
       2. Q=[];//將Q初始化為空隊列
       3. loop
       4.   for 鄰接于u的所有頂點w  do
       5.     if Visited(w)=0 then
       6.       AddQ(w,Q); //將w放于隊列Q之尾
       7.       Visited(w)=1;
       8.     endif
       9.   endfor
       10. if Q為空 then  return; endif
       11. DelHead(u,Q);
       12. endloop
       13.end BFS

       

       

       

      4.2 程序運行流程圖
      程序開始運行后,其流程圖如下所示:

      如圖4.1,程序開始運行后,選擇0或1分別構(gòu)造有向圖和無向圖,然后根據(jù)程序的提示分別輸入圖的結(jié)點數(shù),邊數(shù)和它們之間的對應(yīng)關(guān)系,最后輸出深度優(yōu)先搜索和廣度優(yōu)先搜索的結(jié)果。
      圖4.1程序運行流程圖

      4.3 代碼分析
      4.3.1 主要函數(shù)的功能:
      (1)createmgraph(mgraph *g) 建立圖g的鄰接矩陣表示
      (2)mgraph *g:申請圖g的鄰接矩陣表示空間
      (3)createmgraph(g):建立圖g
      (4)dfsm(mgraph *g,int i):對以鄰接矩陣表示的圖,以序號為i的頂點為出發(fā)點進行深度優(yōu)先搜索
      (5)bfsm(mgraph *g,int k)對以鄰接矩陣表示的圖,以序號為k的頂點作為出發(fā)點進行廣度優(yōu)先搜索
      (6)printf("visit vertex:%d ",g->vexs[i]):訪問序號為i的頂點
      (7)printf("visit vertex:%d ",g->vexs[k]):訪問序號為k的頂點
      (8)printf("the dfs is:") dfstraverse(g); 輸出對圖g進行深度優(yōu)先搜索的結(jié)果
      (9)printf("the bfs is:"); bfstraverse(g);輸出對圖g進行廣度優(yōu)先搜索的結(jié)果


      4.3.2 本程序的數(shù)據(jù)結(jié)構(gòu): 
      dfstraverse(mgraph *g)
       {//對以鄰接矩陣表示的圖,進行深度優(yōu)先搜索
        int i;
        for(i=0;i<g->n;i++)//將圖的所有頂點設(shè)置為未訪問過
          visited[i]=FALSE;
        for(i=0;i<g->n;i++)//對圖*g進行深度優(yōu)先搜索
         if(!visited[i])
          dfsm(g,i);
        printf("\n");
       }//end of dfstraverse

      bfstraverse(mgraph *g)
       {//對以鄰接矩陣表示的圖,進行廣度優(yōu)先搜索
        int i;
        for(i=0;i<g->n;i++)//將所有頂點設(shè)置為未訪問過
          visited[i]=FALSE;
        for(i=0;i<g->n;i++)//對鄰接矩陣表示的圖進行廣度優(yōu)先搜索
         if(!visited[i])
          bfsm(g,i);
        printf("\n");
       }//end of bfstraverse


      4.3.3 本程序的關(guān)鍵代碼:
      #define maxvertexnum 100//設(shè)置鄰接矩陣的最大階數(shù)
      #define queuesize 100//設(shè)置循環(huán)隊列的最大空間
      typedef struct{
        int front,rear,count,data[queuesize];
       }cirqueue;//循環(huán)隊列結(jié)構(gòu)定義
      typedef int vertextype;//設(shè)置圖的頂點信息為整型
      typedef int edgetype;//設(shè)置邊上權(quán)值為整型
      typedef struct{
        vertextype vexs[maxvertexnum];//圖的頂點信息表
        edgetype edges[maxvertexnum][maxvertexnum];//圖的鄰接矩陣
        int n,e;//圖的頂點數(shù)和邊數(shù)
       }mgraph;//圖的鄰接矩陣表示結(jié)構(gòu)定義

       main()//主函數(shù)
       {//建立用鄰接矩陣表示的圖,并進行深度優(yōu)先搜索和廣度優(yōu)先搜索
        mgraph *g;
        g=(mgraph*)malloc(sizeof(mgraph));//申請圖g的鄰接矩陣表示空間
        createmgraph(g);//建立圖g
        printf("the dfs is:");//對圖g進行深度優(yōu)先搜索
        dfstraverse(g);
        printf("the bfs is:");//對圖g進行廣度優(yōu)先搜索
        bfstraverse(g);
       }
      createmgraph(mgraph *g)
       //建立圖g的鄰接矩陣表示
        int i,j,k,w;
        int flag;
      dfsm(mgraph *g,int i)
       //對以鄰接矩陣表示的圖,以序號為i的頂點為出發(fā)點進行深度優(yōu)先搜索
      dfstraverse(mgraph *g)
       //對以鄰接矩陣表示的圖,進行深度優(yōu)先搜索
      bfsm(mgraph *g,int k)
       //對以鄰接矩陣表示的圖,以序號為k的頂點作為出發(fā)點進行廣度優(yōu)先搜索
      bfstraverse(mgraph *g)
       //對以鄰接矩陣表示的圖,進行廣度優(yōu)先搜索

       

       對關(guān)鍵代碼的說明:開始是建立圖的鄰接矩陣,對圖的結(jié)構(gòu)類型的定義,在子程序中,完成對深度優(yōu)先搜索和廣度優(yōu)先搜索的建立,在以鄰接矩陣表示的圖中,分別進行深度優(yōu)先搜索和廣度優(yōu)先搜索,并在主函數(shù)中調(diào)用它們。

      5調(diào)試與運行結(jié)果 
      5.1 調(diào)試方法及調(diào)試過程
         調(diào)試方法: TurboC集成環(huán)境有很強的動態(tài)調(diào)試能力,在程序設(shè)計過程中,有如下幾種主要調(diào)試手段:(1)運行(Run: Run,ctrl-F9) (2)設(shè)置斷點 (break/watch: toggle breakpoint, Ctrl-F8) (3)變量查看及修改 (Debug:Evaluate, CtrL-F4)(4)查看函數(shù)調(diào)用情況(Debug: Call stack, Ctrl-F3)(5)查找函數(shù)(Debug: Find function)(6)更新屏幕內(nèi)容(Debug: Refresh disp1ay)(7)設(shè)置觀察對象(break/watch:Add watch,ctrl-F7)等。
       調(diào)試過程:程序第一次運行時,出現(xiàn)了頭文件無法辨析和C1202的錯誤,在把注釋,此問題得以解決,不過由于本程序大部分采用結(jié)構(gòu)化程序設(shè)計方法,程序是DOS界面,并且數(shù)據(jù)都保存在內(nèi)存中,因此穩(wěn)定性不是很高。除了應(yīng)嚴(yán)格按照數(shù)據(jù)的定義外,數(shù)值類數(shù)據(jù)不能輸入過大,在測試過程中曾由于輸入數(shù)據(jù)過大,發(fā)生了溢出錯誤,修改數(shù)據(jù)后此問題得以解決。在主函數(shù)的結(jié)尾還要加上getch(),否則會因為操作系統(tǒng)版本原因?qū)е聼o法在TC環(huán)境中查看運行結(jié)果。
      5.2 程序運行結(jié)果:
       本次測試數(shù)據(jù)用圖及其鄰接矩陣如圖5.1所示:
       
       圖5.1測試數(shù)據(jù)用圖
       
       
       
       ∞ 3   3    ∞  ∞  ∞
                             3  ∞   ∞   3   4   ∞
       3  ∞   ∞   ∞  ∞   3
       ∞  3   ∞   ∞  ∞  ∞
       ∞  4   ∞   ∞  ∞  ∞
       ∞  ∞  3    ∞  ∞  ∞
       圖5 .2 測試數(shù)據(jù)用圖鄰接矩陣
       
       測試過程中此本次程序設(shè)計好后經(jīng)調(diào)試運行后的結(jié)果截圖:(見圖)  
       圖5.3 選擇有向圖
      如圖5.3:程序開始運行時會要求輸入圖的類型,此處輸入0表示選擇有向圖
       

       圖5.4 輸入圖的邊數(shù)和結(jié)點數(shù)
      如圖5.4:在程序分別輸入結(jié)點數(shù)6和邊數(shù)5,再從1至6分別輸入結(jié)點數(shù),構(gòu)造圖的大小
       

       圖5.5 輸入圖的各結(jié)點和權(quán)值
      如圖5.5:在程序中,分別輸入相連兩結(jié)點和連接兩結(jié)點的邊的權(quán)
       

                            圖5.6深度優(yōu)先搜索輸出結(jié)果
      如圖5.6:深度優(yōu)先搜索輸出過程為1—2—4—5—3—6


       圖5 .7選擇無向圖
       
      如圖5.7:程序開始運行時會要求輸入圖的類型,此處輸入1表示選擇無向圖


       圖5.8輸入圖的邊數(shù)和結(jié)點數(shù)
      如圖5.8:在程序分別輸入結(jié)點數(shù)6和邊數(shù)5,再從1至6分別輸入結(jié)點數(shù),構(gòu)造圖的大小


       圖5.9輸入圖的各結(jié)點和權(quán)值
      如圖5.9:在程序中,分別輸入相連兩結(jié)點和連接兩結(jié)點的邊的權(quán)

       圖5.10廣度優(yōu)先搜索輸出結(jié)果
      如圖5.10:廣度優(yōu)先搜索輸出過程為1—2—3—4—5—6

      6應(yīng)用探討
       通過本次設(shè)計的最終程序我們可以看到:通過建立已定義好的圖的鄰接矩陣類型,然后用子函數(shù)寫出深度優(yōu)先搜索遍歷及廣度優(yōu)先搜索遍歷,再用主函數(shù)調(diào)用實現(xiàn)。這樣我們可以對圖進行周游,從而實現(xiàn)圖的搜索。而且從運行結(jié)果中還可以對兩種遍歷結(jié)果進行比較。雖然本程序生成的結(jié)果只是一排按圖的頂點的排序,但是我們在實際的軟件開發(fā)中可以將其運用到其中以實現(xiàn)我們?nèi)粘5母鞣N搜索軟件中。
       
      7結(jié)束語
       由于平時對編程相關(guān)的知識掌握不夠深刻,在本次程序設(shè)計中遇到了很多麻煩,經(jīng)常會出現(xiàn)改正一個錯誤產(chǎn)生更多錯誤的情況,很多語言運用都出現(xiàn)了錯誤,最后改用C語言,并在同學(xué)幫助下終于、完成了對程序的調(diào)試。本次程序設(shè)計實踐,使我更進一步的掌握了C語言編程的運用,并且在編寫程序中進一步學(xué)習(xí)了運用數(shù)據(jù)結(jié)構(gòu)與算法實現(xiàn)程序功能,對圖的深度搜索,廣度搜索,有了很多新的理解,同時認(rèn)識到了算法在編程中的重要性,不過由于時間緊迫,很多問題到現(xiàn)在還不能理解,課程設(shè)計所作的一些要求還沒有達到。
       正所謂臺上一分鐘,臺下十年功,只有平時多加刻苦,在我們遇到有關(guān)方面的問題時才不會顯得那么束手無策。
       
      參考文獻
      [1] 許卓群,楊冬青,唐世渭,張銘.數(shù)據(jù)結(jié)構(gòu)與算法.北京:高等教育出版社,2005
      [2] 陳志泊,王春玲.面向?qū)ο蟮某绦蛟O(shè)計語言——C++.北京:人民郵電出版社,2005
      [3] 潭浩強. C程序設(shè)計.北京:清華大學(xué)出版社,2004

      附錄:圖的搜索源程序清單
      //圖的搜索實現(xiàn)
      #include <stdio.h>
      #define maxvertexnum 100//設(shè)置鄰接矩陣的最大階數(shù)
      #define queuesize 100//設(shè)置循環(huán)隊列的最大空間
      typedef struct{
        int front,rear,count,data[queuesize];
       }cirqueue;//循環(huán)隊列結(jié)構(gòu)定義
      typedef int vertextype;//設(shè)置圖的頂點信息為整型
      typedef int edgetype;//設(shè)置邊上權(quán)值為整型
      typedef struct{
        vertextype vexs[maxvertexnum];//圖的頂點信息表
        edgetype edges[maxvertexnum][maxvertexnum];//圖的鄰接矩陣
        int n,e;//圖的頂點數(shù)和邊數(shù)
       }mgraph;//圖的鄰接矩陣表示結(jié)構(gòu)定義
      typedef enum{FALSE,TRUE}boolean;
      boolean visited[maxvertexnum];//頂點訪問標(biāo)記向量

      main()//主函數(shù)
       {//建立用鄰接矩陣表示的圖,并進行深度優(yōu)先搜索和廣度優(yōu)先搜索
        mgraph *g;
        g=(mgraph*)malloc(sizeof(mgraph));//申請圖g的鄰接矩陣表示空間
        createmgraph(g);//建立圖g
        printf("the dfs is:");//對圖g進行深度優(yōu)先搜索
        dfstraverse(g);
        printf("the bfs is:");//對圖g進行廣度優(yōu)先搜索
        bfstraverse(g);
       }

      createmgraph(mgraph *g)
       {//建立圖g的鄰接矩陣表示
        int i,j,k,w;
        int flag;
        printf("\ncreat:\n");
        printf("digragh--0\n");
        printf("undigragh--1\n");
        scanf("%d",&flag);
        printf("input n,e\n");
        scanf("%d%d",&g->n,&g->e);//輸入圖*g的頂點數(shù)和邊數(shù)
        printf("input nodes:\n");
        for(i=0;i<g->n;i++)//輸入n個頂點的信息
          scanf("%d",&(g->vexs[i]));
        for(i=0;i<g->n;i++)//將鄰接矩陣數(shù)組初始化
         for(j=0;j<g->n;j++)
          g->edges[i][j]=0;
        for(k=0;k<g->e;k++){//讀入n有向邊對應(yīng)的三元組(i,j,w),若構(gòu)造有向圖,
                  //i為有向邊的弧尾,j是有向邊的弧頭,
                              //w是有向邊的權(quán)值(建立一般的有向圖時,可輸入1)
          printf("input i,j,w:\n");
          scanf("%d%d%d",&i,&j,&w);
          g->edges[i][j]=w;
          if (flag)//構(gòu)造無向圖
            g->edges[j][i]=w;
         }
       }

      dfsm(mgraph *g,int i)
       {//對以鄰接矩陣表示的圖,以序號為i的頂點為出發(fā)點進行深度優(yōu)先搜索
        int j;
        printf("visit vertex:%d ",g->vexs[i]);//訪問序號為i的頂點
        visited[i]=TRUE;//將序號為i的頂點設(shè)置訪問過標(biāo)記
        for(j=0;j<g->n;j++)//掃描鄰接矩陣的第i行,做以下操作
         if ((g->edges[i][j]!=0)&&(!visited[j]))
           //尋找序號為i的頂點的未訪問過的鄰接點(設(shè)序號為k),
          dfsm(g,j);//以序號為k的頂點為出發(fā)點進行深度優(yōu)先搜索
       }//end of dfsm

      dfstraverse(mgraph *g)
       {//對以鄰接矩陣表示的圖,進行深度優(yōu)先搜索
        int i;
        for(i=0;i<g->n;i++)//將圖的所有頂點設(shè)置為未訪問過
          visited[i]=FALSE;
        for(i=0;i<g->n;i++)//對圖*g進行深度優(yōu)先搜索
         if(!visited[i])
          dfsm(g,i);
        printf("\n");
       }//end of dfstraverse

      bfsm(mgraph *g,int k)
       {//對以鄰接矩陣表示的圖,以序號為k的頂點作為出發(fā)點進行廣度優(yōu)先搜索
        int i,j;
        cirqueue *q;
        q=(cirqueue *)malloc(sizeof(cirqueue));//申請循環(huán)隊列空間*q
        q->rear=q->front=q->count;//將循環(huán)隊列*q設(shè)置為空隊列
        printf("visit vertex:%d ",g->vexs[k]);//訪問序號為k的頂點
        visited[k]=TRUE;//將序號為k是結(jié)點設(shè)置為已訪問過
        q->data[q->rear]=k;q->rear=(q->rear+1)%queuesize;q->count++;//將序號為k的頂點入隊
        while(q->count){//若隊列不為空,則做以下操作
          i=q->data[q->front];q->front=(q->front+1)%queuesize;q->count--;
           //將隊首元素(序號為i的頂點)出隊
        for(j=0;j<g->n;j++)//尋找序號為i頂點的鄰接點,并做如下處理
         if((g->edges[i][j]!=0)&&(!visited[j])){//若序號為i的頂點有未訪問過鄰接點
           printf("visit vertex:%d ",g->vexs[j]);//訪問序號為j的頂點
           visited[j]=TRUE;//設(shè)置序號為j的頂點訪問過標(biāo)記
           q->data[q->rear]=j;q->rear=(q->rear+1)%queuesize;q->count++;
            //將序號為j的頂點入隊
          }//end of if
         }//end of for
       }//end of bfsm

      bfstraverse(mgraph *g)
       {//對以鄰接矩陣表示的圖,進行廣度優(yōu)先搜索
        int i;
        for(i=0;i<g->n;i++)//將所有頂點設(shè)置為未訪問過
          visited[i]=FALSE;
        for(i=0;i<g->n;i++)//對鄰接矩陣表示的圖進行廣度優(yōu)先搜索
         if(!visited[i])
          bfsm(g,i);
        printf("\n");
       }//end of bfstraverse 
       

      【通過圖的鄰接矩陣實現(xiàn)圖的搜索實現(xiàn)(一)】相關(guān)文章:

      基于MapObjects控件的鷹眼圖實現(xiàn)方法03-07

      Web搜索引擎的智能搜索設(shè)計與實現(xiàn)03-08

      CPM搜索引擎的設(shè)計與實現(xiàn)03-08

      數(shù)字電視衛(wèi)星信號的搜索方案的研究與實現(xiàn)03-07

      夢想與實現(xiàn)03-18

      刑罰實現(xiàn)探析03-18

      實時混音的實現(xiàn)03-18

      搜索引擎檢索子系統(tǒng)的設(shè)計與實現(xiàn)ASP+SQL11-23

      中華老字號如何通過情感營銷實現(xiàn)跨越式發(fā)展03-24

      主站蜘蛛池模板: 无码熟妇人妻AV不卡| 国产又大又猛的三级视频| 国产一区精品综亚洲av| 精品国产你懂的在线观看| 绥中县| 一本加勒比hezyo无码视频| 99久久这里只精品国产免费| 亚洲AV无码国产精品久久l| 久久婷婷国产精品简爱av| 海南省| 中卫市| 亚洲中文字幕有码av| 亚洲AV无码乱码精品国产草莓| 亚洲va成无码人在线观看| 精品无码成人片一区二区| 婷婷色在线视频中文字幕| 马鞍山市| 浦东新区| 新久久久高清黄色国产| 浮山县| 国产精品一区久久av| 桓台县| 禹城市| 柘荣县| 鱼台县| 广元市| 东至县| 精品中文字幕日本久久久| 长子县| 亚洲国产一区久久yourpan| 怀仁县| 久久综合给合久久97色| 日韩精品视频免费福利在线观看| 国产女主播福利一二区| 国产精品伦人视频免费看| 温州市| 99久久综合国产精品免费| 国产喷白浆精品一区二区| 亚洲精品一区二区三区免费观看| 亚洲精彩视频一区二区| 无码国产精品一区二区免费式芒果 |