欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      圖的應(yīng)用 實驗(精選5篇)

      時間:2019-05-12 04:11:09下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《圖的應(yīng)用 實驗》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《圖的應(yīng)用 實驗》。

      第一篇:圖的應(yīng)用 實驗

      圖的應(yīng)用 實驗日志

      實驗題目:圖的建立及輸出

      實驗?zāi)康模航D的存儲結(jié)構(gòu)(圖的類型可以是有向圖、無向圖、有向網(wǎng)、無向網(wǎng),學(xué)生可以任選兩種類型),能夠輸入圖的頂點和邊的信息,并存儲到相應(yīng)存儲結(jié)構(gòu)中,而后輸出圖的鄰接矩陣。實驗主要步驟: 1.編輯源程序;

      2.編寫有向圖的實現(xiàn)程序; 3.編寫實現(xiàn)無向圖的源程序;

      4.連接—編譯—運行該程序,并在過程中調(diào)試。源程序:

      #include #include #define MAX_VERTEX_NUM 20

      typedef struct{ int arcs[MAX_VERTEX_NUM][MAX_VERTEX_NUM];int vexnum;int arcnum;char vexs[MAX_VERTEX_NUM];}MGraph;

      int LocateVex(MGraph G,char v){ int i;for(i=0;i

      if(G.vexs[i]==v)

      return i;} return 0;}

      int CreateUDG(MGraph G){ int i,j,k,w;char v1,v2;printf(“請輸入頂點和邊:n”);scanf(“%d%d”,&G.vexnum,&G.arcnum);for(i=0;i

      int CreateDG(MGraph G){ int i,j,k,w;char v1,v2;printf(“請輸入頂點和邊:n”);scanf(“%d%d”,&G.vexnum,&G.arcnum);for(i=0;i

      n”);} printf(“輸出的領(lǐng)接矩陣是:n”);for(i=0;i

      printf(“ %d ”,G.arcs[i][j]);printf(“n”);} return 0;}

      void main(){

      char kind[5];MGraph G;printf(“請輸入要建立的圖的類型(UDG或DG):n”);

      scanf(“%s”,kind);if(strcmp(“UDG”,kind)==0)

      CreateUDG(G);if(strcmp(“DG”,kind)==0)

      CreateDG(G);} 實驗結(jié)果:

      心得體會:通過實驗掌握有向圖和無向圖的概念;掌握鄰接矩陣和鄰接鏈表建立圖的存儲結(jié)構(gòu);

      第二篇:數(shù)據(jù)結(jié)構(gòu)上機實驗--圖

      數(shù)據(jù)結(jié)構(gòu)上機實驗六

      實驗內(nèi)容:圖的基本操作

      實驗要求:

      1)圖的遍歷與基本操作要作為函數(shù)被調(diào)用.2)把自己使用的圖結(jié)構(gòu)明確的表達出來.3)基本上實現(xiàn)每個實驗題目的要求.分組要求:可單獨完成,也可兩人一組。

      實驗?zāi)康?

      1)熟悉C/C++基本編程,培養(yǎng)動手能力.2)通過實驗,加深對圖的理解.評分標(biāo)準(zhǔn):

      1)只完成第一和第二題,根據(jù)情況得4,5分;

      2)完成前3題,根據(jù)情況得5至7分;

      3)在2)基礎(chǔ)上,選做四)中題目,根據(jù)情況得8至10分。

      題目:

      一)建立一個無向圖+遍歷+插入

      (1)以數(shù)組表示法作為存儲結(jié)構(gòu),從鍵盤依次輸入頂點數(shù)、弧數(shù)與各弧信息建立一個無向圖;

      (2)對(1)中生成的無向圖進行廣度優(yōu)先遍歷并打印結(jié)果;

      (3)向(1)中生成的無向圖插入一條新弧并打印結(jié)果;

      二)建立一個有向圖+遍歷+插入+刪除

      (1)以鄰接表作為圖的存儲結(jié)構(gòu),從鍵盤輸入圖的頂點與弧的信息建立一個有向圖;

      (2)對(1)中生成的有向圖進行深度優(yōu)先遍歷并打印結(jié)果;

      (3)在(1)中生成的有向圖中,分別插入與刪除一條弧并打印其結(jié)果;

      (4)在(1)中生成的有向圖中,分別插入與刪除一個頂點并打印結(jié)果;

      (5)在(1)中生成的有向圖中,各頂點的入度與出度并打印結(jié)果;

      三)基本應(yīng)用題

      (1)編寫算法,判斷圖中指定的兩個頂點是否連通。

      (2)編寫算法,判斷圖的連通性。如果不連通,求連通分量的個數(shù)

      (3)編寫算法,判斷圖中任意兩個頂點的連通性

      (4)編寫算法,判斷圖中是否存在回路。

      (5)實現(xiàn)圖的廣度優(yōu)先搜索算法。

      四)高級應(yīng)用題

      (1)實現(xiàn)Prim算法

      (2)實現(xiàn)Kruskal算法

      (3)實現(xiàn)迪杰斯特拉算法

      (4)實現(xiàn)拓撲排序算法

      (5)實現(xiàn)關(guān)鍵路徑算法

      第三篇:數(shù)據(jù)結(jié)構(gòu) 實驗一 圖[推薦]

      北京郵電大學(xué)信息與通信工程學(xué)院

      數(shù)據(jù)結(jié)構(gòu)實驗報告

      實驗名稱: 實驗二——圖 學(xué)生姓名: 佘晨陽 班

      級: 2014211117 班內(nèi)序號: 20 學(xué)

      號: 2014210491 日

      期: 2015年12月05日

      1.實驗要求

      根據(jù)圖的抽象數(shù)據(jù)類型的定義,使用鄰接矩陣或鄰接表實現(xiàn)一個圖。圖的基本功能:

      1、圖的建立

      2、圖的銷毀

      3、深度優(yōu)先遍歷圖

      4、廣度優(yōu)先遍歷圖

      5、使用普里姆算法生成最小生成樹

      6、使用克魯斯卡爾算法生成最小生成樹

      7、求指定頂點到其他各頂點的最短路徑

      8、其他:比如連通性判斷等自定義操作

      編寫測試main()函數(shù)測試圖的正確性

      2.程序分析

      本實驗要求掌握圖基本操作的實現(xiàn)方法,了解最小生成樹的思想和相關(guān)概念,了解最短路徑的思想和相關(guān)概念,學(xué)習(xí)使用圖解決實際問題的能力。

      2.1 存儲結(jié)構(gòu)

      存儲結(jié)構(gòu):1.不帶權(quán)值的無向圖鄰接矩陣

      2.帶權(quán)值的無向圖鄰接矩陣

      3.帶權(quán)值的有向圖鄰接矩陣

      1.不帶權(quán)值的無向圖鄰接矩陣

      第1頁 北京郵電大學(xué)信息與通信工程學(xué)院

      2帶權(quán)值的無向圖鄰接矩陣.3.帶權(quán)值的有向圖鄰接矩陣

      [備注]:

      1.在使用打印元素、BFS、DFS 采用無權(quán)值的無向圖鄰接矩陣存儲方式 2.在使用PRIM、KRUSKAL、3.在使用最短路徑的算法時采用具有權(quán)值的有向圖鄰接矩陣存儲方式

      2.2 關(guān)鍵算法分析

      第2頁 北京郵電大學(xué)信息與通信工程學(xué)院

      一.圖的鄰接矩陣構(gòu)造函數(shù):

      1.關(guān)鍵算法: template Graph::Graph(f a[], int n, int e)

      //帶權(quán)值的圖的構(gòu)造函數(shù) { int i, j, k, height;f s1, s2;vnum = n;arcnum = e;for(k = 0;k < n;k++){ vertex[k] = a[k];}

      //初始化頂點

      for(k = 0;k

      for(i = 0;i < n;i++)

      {

      arc[k][i] =-1;

      if(i == k)arc[k][i] = 0;

      //初始化權(quán)值的大小

      }

      visited[k] = 0;} cout << endl;for(k = 0;k

      //初始化邊

      {

      cout << “請輸入線性鏈接節(jié)點:”;

      cin >> s1 >> s2 >> height;

      arc[convert(s1)][convert(s2)] = height;

      arc[convert(s2)][convert(s1)] = arc[convert(s1)][convert(s2)];//采用無向圖帶權(quán)值的鄰接矩陣

      } cout << endl;cout << “所得鄰接矩陣為:” << endl;

      for(k = 0;k

      for(i = 0;i < n;i++)

      {

      if(arc[k][i] ==-1)

      cout << “∞” << “ ”;

      else cout << arc[k][i] << “ ”;

      //打印鄰接矩陣的格式

      }

      cout << endl;

      } cout << endl 2.算法的時間復(fù)雜度

      第3頁 北京郵電大學(xué)信息與通信工程學(xué)院

      有構(gòu)造可知,初始化時其時間復(fù)雜度:O(n2)

      二.深度優(yōu)先便利DFS:

      1.關(guān)鍵算法

      ①從某頂點v出發(fā)并訪問

      ②訪問v的第一個未訪問的鄰接點w,訪問w的第一個未訪問的鄰接點u,……

      ③若當(dāng)前頂點的所有鄰接點都被訪問過,則回溯,從上一級頂點的下一個未訪問過的頂點開始深度優(yōu)先遍歷

      ④直到所有和v路徑相通的頂點都被訪問到; 2.代碼圖解:

      深度優(yōu)先遍歷示意圖 3.代碼詳解:

      template void Graph::DFS(int v){ cout << vertex[v];visited[v] = 1;

      for(int j = 0;j < vnum;j++)

      //連通圖

      if((visited[j] == 0)&&(arc[v][j] >= 1))DFS(j);//當(dāng)存在回路時,則連通深一層遍歷

      } 4.時間復(fù)雜度

      時間復(fù)雜度:O(n2)

      空間復(fù)雜度:棧的深度O(n)

      輔助空間O(n)

      第4頁 北京郵電大學(xué)信息與通信工程學(xué)院

      三.廣度遍歷BFS 1.關(guān)鍵算法 ①訪問頂點v ②依次訪問v的所有未被訪問的鄰接點v1,v2,v3…

      ③分別從v1,v2,v3…出發(fā)依次訪問它們未被訪問的鄰接點 ④反復(fù)①②③,直到所有和v路徑相通的頂點都被訪問到;

      2.代碼圖解

      3.代碼詳解

      1.初始化隊列Q

      2.訪問頂點v,visited[v]=1

      3.while(隊列非空)

      3.1 v=隊頭元素出隊

      3.2 訪問隊頭元素的所有未訪問的鄰接點 4.時間復(fù)雜度

      時間復(fù)雜度:O(n2)

      空間復(fù)雜度:輔助空間O(n)

      四.最小生成樹——普里姆算法

      1,關(guān)鍵思路

      一般情況下,假設(shè)n個頂點分成兩個集合:U(包含已落在生成樹上的結(jié)點)和V-U(尚未落在生成樹上的頂點),則在所有連通U中頂點和V-U中頂點的邊中選取權(quán)值最小的邊。主數(shù)據(jù)結(jié)構(gòu):

      鄰接矩陣 輔助數(shù)據(jù)結(jié)構(gòu):

      int

      adjvex[MAXSIZE];// U集中的頂點序號

      第5頁 北京郵電大學(xué)信息與通信工程學(xué)院

      int

      lowcost[MAXSIZE];

      // U?(V-U)的最小權(quán)值邊

      2.代碼圖解

      第6頁 北京郵電大學(xué)信息與通信工程學(xué)院

      第7頁 北京郵電大學(xué)信息與通信工程學(xué)院

      3;代碼詳解

      template void Graph::Prim(){ for(int i = 0;i < vnum;i++)

      //輔助數(shù)組存儲所有到的V0邊

      {

      adjvex[i] = 0;lowcost[i] = arc[0][i];

      } lowcost[0] = 0;for(int j = 1;j < vnum;j++)

      //循環(huán)n-1次

      {

      int k = Mininum(lowcost);

      //求下一個頂點

      cout << vertex[adjvex[k]] << “->” << vertex[k] << endl;

      lowcost[k] = 0;

      //U=U+{Vk}

      for(int j = 0;j < vnum;j++)

      //設(shè)置輔助數(shù)組

      {

      if((lowcost[j]!= 0 && arc[k][j] < lowcost[j]))

      {

      lowcost[j] = arc[k][j];

      adjvex[j] = k;

      }

      }

      第8頁 北京郵電大學(xué)信息與通信工程學(xué)院

      } } 4,時間復(fù)雜度:

      時間復(fù)雜度O(n2),適合稠密圖

      五.最小生成樹----克魯斯卡爾算法

      1,關(guān)鍵思路

      先構(gòu)造一個只含n個頂點的子圖SG,然后從權(quán)值最小的邊開始,若它的添加不使SG中產(chǎn)生回路,則在SG上加上這條邊,如此重復(fù),直至加上n-1條邊為止。2.代碼圖解:

      3.代碼詳解

      template void Graph::Kruskal()

      //最小生成樹—kruskal算法

      { cout<<“Krusal算法結(jié)果為:”<

      int k = 0, j = 0;

      while(k < vnum-1){

      int m = vedgelist[j].fromv, n = vedgelist[j].endv;

      int sn1 = vset[m];

      int sn2 = vset[n];

      //兩個頂點分屬

      第9頁 北京郵電大學(xué)信息與通信工程學(xué)院

      不同的集合 if(sn1!= sn2)

      {

      cout << vertex[m] << “->” << vertex[n] << endl;

      k++;

      for(int i = 0;i < vnum;i++)

      {

      if(vset[i] == sn2)

      vset[i] = sn1;

      //集合sn2全部改成sn1

      }

      }

      j++;} } 4.時間復(fù)雜度

      時間復(fù)雜度O(nlogn),適合稀疏圖

      六.最短路徑——Dijkstra算法 1.關(guān)鍵代碼

      ? 按路徑長度遞增的次序產(chǎn)生源點到其余各頂點的最短路徑。? 1)設(shè)置集合s存儲已求得的最短路徑的頂點,? 2)初始狀態(tài):s=源點v ? 3)疊代算法:

      ? 直接與v相連的最近頂點vi,加入s ? 從v經(jīng)過vi可以到達的頂點中最短的,加入s

      ……

      2.代碼圖解

      第10頁 北京郵電大學(xué)信息與通信工程學(xué)院

      3.代碼詳解

      emplate void Graph::ShotPath(f x)

      //關(guān)于最短路徑的初始化 { int v=convert(x);

      for(int i = 0;i < vnum;i++)

      //初始化路徑和點

      {

      s[i]=0;

      disk[i] = arc[v][i];

      if(disk[i]!= maxs)path[i] = v;

      else path[i] =-1;} s[v] = 1;disk[v] = 0;path[v]=-1;for(int i = 0;i < vnum;i++)

      //反復(fù)經(jīng)過從該點到其他點的路徑

      {

      if((v = FindMin())==-1)continue;

      s[v] = 1;

      for(int j = 0;j < vnum;j++)

      if(!s[j] &&(disk[j]>arc[v][j] + disk[v]))

      {

      第11頁 北京郵電大學(xué)信息與通信工程學(xué)院

      disk[j] = arc[v][j] + disk[v];

      path[j] = v;

      } } Print();

      //打印路徑長度和遍歷

      } 4.時間復(fù)雜度

      時間復(fù)雜度為:n^2

      七.判斷連通圖算法

      template bool Graph::judgegraph(){ DFS(convert(vertex[0]));if(count==vnum)

      {

      cout<<“該圖為連通圖!*******輸入成功!”<

      return false;

      } else {

      cout<<“該圖不為連通圖!*******請重新輸入”<

      return true;

      } }

      時間復(fù)雜度:n^2

      3.程序運行結(jié)果

      1.測試主函數(shù)流程:

      第12頁 北京郵電大學(xué)信息與通信工程學(xué)院

      函數(shù)流程圖:

      1.輸入圖的連接邊并打印

      構(gòu)造下面所示圖的鄰接矩陣:

      第13頁 北京郵電大學(xué)信息與通信工程學(xué)院

      2.判斷圖連通是否成功

      3.BFS DFS PRIM算法的實現(xiàn)

      第14頁 北京郵電大學(xué)信息與通信工程學(xué)院

      4.克魯斯卡爾算法實現(xiàn)過程

      4.有向圖鄰接矩陣的構(gòu)建

      第15頁 北京郵電大學(xué)信息與通信工程學(xué)院

      插入V0位置后打印距離并開始回溯

      總結(jié)

      1.調(diào)試時出現(xiàn)的問題及解決的方法

      問題一:prim算法中

      解決方法:調(diào)整循環(huán)條件,修正函數(shù)體注意有無Next的區(qū)別

      第16頁 北京郵電大學(xué)信息與通信工程學(xué)院

      問題二:BFS和DFS同時在一個類里作用時會輸出錯誤

      解決方案:每次BFS/DFS使用時都把visited數(shù)組初始化一遍

      問題三:在最短路徑,經(jīng)常出現(xiàn)了停止輸入的情況

      解決方法:改return為continue,并修改打印算法 2.心得體會

      通過本次實驗,基本熟練掌握了c++基本語句,尤其對圖的結(jié)構(gòu)及應(yīng)用有了較深了解;調(diào)試代碼時盡量做到完成一個代碼段調(diào)試一次,可以最快檢測出錯誤所在;類的封裝和調(diào)用,類的共有成員和私有成員的設(shè)置。

      3.下一步的改進

      第一,設(shè)置增加圖節(jié)點和邊的函數(shù)

      第二,實現(xiàn)圖形化輸出圖的路徑的功能

      第三,主函數(shù)設(shè)計簡單,不要過于累贅

      4.程序中出現(xiàn)的亮點

      1)利用dfs算法衍生生成判斷是否為連通圖的連通算法

      2)采用graph類實現(xiàn)所有圖的所有算法,所需的數(shù)據(jù)類型均在私有成員內(nèi),封裝 3)利用convert函數(shù)采取象意輸入,采用ABCD的節(jié)點輸入方式而并非轉(zhuǎn)化成01234再輸入。

      4)BFS中采用c++標(biāo)準(zhǔn)庫的。

      5)打印鄰接矩陣時,打印出非鏈接的∞符號和與自身路徑的0距離 6)判斷圖為非連通圖后,提示輸入錯誤,重新輸入圖元素

      第17頁

      第四篇:湘潭大學(xué) 數(shù)據(jù)結(jié)構(gòu)實驗5 實驗報告 源代碼 圖的應(yīng)用

      “數(shù)據(jù)結(jié)構(gòu)和算法II”課程實驗報告

      實驗名稱:圖及其應(yīng)用

      班級 姓名 學(xué)號 實驗日期: 實驗機時:2 學(xué)時 實驗成績:

      -----------------一.實驗?zāi)康模?/p>

      1.熟練掌握圖的兩種存儲結(jié)構(gòu)(鄰接矩陣和鄰接表)的表示方法 2.掌握圖的基本運算及應(yīng)用

      3.加深對圖的理解,逐步培養(yǎng)解決實際問題的編程能力 二.實驗內(nèi)容:(1)基本實驗內(nèi)容:

      采用鄰接表或鄰接矩陣方式存儲圖,實現(xiàn)圖的深度遍歷和廣度遍歷; 用廣度優(yōu)先搜索方法找出從一頂點到另一頂點邊數(shù)最少的路徑。三.程序及注釋:

      #include “stdio.h” #include “l(fā)imits.h” //INT_MAX頭文件 #include “windows.h” //boolean頭文件 #define INFINITY INT_MAX #define MAX_VERTEX_NUM 20 #define OVERFLOW-1 #define OK 1 #define ERROR 0 typedef int Status;typedef enum {DG,DN,UDG,UDN} GraphKind;typedef int VRType;typedef char VertexType;typedef char* InfoType;typedef int QElemType;//邊信息

      typedef struct ArcCell{ VRType adj;//1或0表示是否鄰接,對帶權(quán)圖,則為權(quán)值類型 InfoType *info;}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];//圖結(jié)構(gòu) typedef struct {

      VertexType vexs[MAX_VERTEX_NUM];//定點向量 AdjMatrix arcs;

      //鄰接矩陣,為一二維數(shù)組 //圖的當(dāng)前頂點數(shù)和弧數(shù) int vexnum,arcnum;GraphKind kind;

      //圖的種類標(biāo)志

      }MGraph;//輔助隊列

      typedef struct QNode{ QElemType data;//數(shù)值域 struct QNode *next;//指針域

      }QNode, *QueuePtr;typedef struct{ QueuePtr front;//隊頭 QueuePtr rear;//隊尾

      }LinkQueue;//初始化隊列

      Status InitQueue(LinkQueue &Q){

      Q.front = Q.rear =(QueuePtr)malloc(sizeof(QNode));if(!Q.front){ printf(“內(nèi)存分配失敗!”);exit(OVERFLOW);} Q.front->next = NULL;return OK;} //插入元素到隊尾

      Status EnQueue(LinkQueue &Q,QElemType e){

      QueuePtr p =(QueuePtr)malloc(sizeof(QNode));if(!p){printf(“n內(nèi)存分配失敗!”);exit(OVERFLOW);} p->data = e;p->next = NULL;Q.rear->next = p;Q.rear = p;return OK;} //隊列判空

      Status QueueEmpty(LinkQueue Q){ return Q.front == Q.rear;} //銷毀隊列

      Status DestroyQueue(LinkQueue &Q){

      while(Q.front){Q.rear = Q.front->next;free(Q.front);Q.front = Q.rear;} return OK;} //刪除隊頭元素

      Status DeQueue(LinkQueue &Q,QElemType &e){

      if(QueueEmpty(Q)){printf(“n隊列為空!”);return ERROR;} QueuePtr p = Q.front->next;e = p->data;Q.front->next = p->next;if(Q.rear==p)Q.rear = Q.front;free(p);return OK;} //對頂點v定位,返回該頂點在數(shù)組的下標(biāo)索引,若找不到則返回-1 int LocateVex(MGraph G,char v){

      for(int i=0;i

      G.kind = UDN;printf(“輸入頂點個數(shù)和邊數(shù)(如:4,3):”);int vexnum,arcnum;scanf(“%d,%d”,&vexnum,&arcnum);G.vexnum=vexnum;G.arcnum=arcnum;//判斷是否超過頂點最大個數(shù) while(G.vexnum>MAX_VERTEX_NUM){printf(“最大頂點為20,重新輸入(如:4,3):”);scanf(“%d,%d”,&G.vexnum,&G.arcnum);} printf(“n依次輸入頂點向量值n”);int i;for(i=0;i

      //清空緩沖區(qū) fflush(stdin);printf(“第%d個:”,i+1);scanf(“%c”,&G.vexs[i]);} //初始化鄰接矩陣 for(i=0;i

      int values;printf(“n輸入依附兩個頂點的邊及其權(quán)值<如,a,b,1>n”);for(i=0;i

      printf(“第%d條:”,i+1);//清空緩沖區(qū) fflush(stdin);scanf(“%c,%c,%d”,&rear,&front,&values);int m,n;//定位兩頂點在vexs數(shù)組中的索引 m = LocateVex(G,rear);n = LocateVex(G,front);if(m==-1||n==-1){

      printf(“輸入頂點或不在此圖中,請重新輸入!n”);i--;continue;} //賦予對應(yīng)矩陣位置的權(quán)值,以及對稱弧的權(quán)值 G.arcs[m][n].adj = values;G.arcs[n][m].adj = values;} return OK;} //CreateUDG //矩陣輸出

      void printArcs(MGraph G){

      int i;printf(“ ”);//輸出第一行的頂點向量 for(i=0;i

      for(int j=0;j

      else printf(“ %d”,G.arcs[i][j].adj);}} printf(“ ∞”);

      printf(“n”);} //訪問頂點v輸出

      Status printAdjVex(MGraph G,int v){ printf(“%c ”,G.vexs[v]);return OK;} //查找v頂點的第一個鄰接點

      Status FirstAdjVex(MGraph G,int v){ //查找與頂點v的第一個鄰接點,找到后立即返回其索引,若找不到,則返回-1 for(int i=1;i

      return i;} return-1;} //查找基于v頂點的w鄰接點的下一個鄰接點 Status NextAdjVex(MGraph G,int v,int w){

      //查找基于頂點v的w鄰接點的下一個鄰接點,找到之后立即返回其索引,若找不到,則返回-1 for(int i=w+1;i

      boolean visited[MAX_VERTEX_NUM];//函數(shù)指針變量

      Status(* VisitFunc)(MGraph G,int v);//DFS,從第v個頂點出發(fā)遞歸深度優(yōu)先遍歷圖G void DFS(MGraph G,int v){

      visited[v] = TRUE;//訪問第v個頂點 VisitFunc(G,v);for(int w=FirstAdjVex(G,v);w>=0;w=NextAdjVex(G,v,w)){if(!visited[w])

      DFS(G,w);}} //深度優(yōu)先遍歷

      void DFSTraverse(MGraph G,Status(*Visit)(MGraph G,int v)){ //將函數(shù)復(fù)制給全局的函數(shù)指針變量,待調(diào)用DFS時使用

      VisitFunc = Visit;int v;//將訪問標(biāo)記初始化為false for(v=0;v

      void BFSTraverse(MGraph G,Status(*Visit)(MGraph G,int v)){

      //按廣度優(yōu)先非遞歸遍歷圖G,使用輔助隊列Q和訪問標(biāo)志數(shù)組Visited int v;int u;//將訪問標(biāo)記數(shù)組初始化為false for(v = 0;v

      //判斷頂點V是否被訪問 if(!visited[v]){//將第一次訪問的頂點對應(yīng)的訪問標(biāo)記數(shù)組位置賦值為TRUE

      visited[v] = TRUE;//輸出頂點v Visit(G,v);EnQueue(Q,v);while(!QueueEmpty(Q)){//按入隊序列取出頂點,便于查找此頂點的鄰接點

      DeQueue(Q,u);//查找當(dāng)前頂點鄰接點

      for(int w=FirstAdjVex(G,u);w>=0;w = NextAdjVex(G,u,w))

      if(!visited[w]){visited[w] =TRUE;Visit(G,w);EnQueue(Q,w);}}} //銷毀隊列 DestroyQueue(Q);} int main(){

      printf(“====圖的創(chuàng)建及其應(yīng)用====n”);//創(chuàng)建一個圖 MGraph G;CreateUDN(G);//用鄰接矩陣輸出圖

      printf(“n圖的鄰接矩陣輸出如下:n”);printArcs(G);//深度優(yōu)先遍歷

      printf(“n深度優(yōu)先遍歷序列:n”);DFSTraverse(G,printAdjVex);printf(“n”);//廣度優(yōu)先遍歷

      } printf(“n廣度優(yōu)先遍歷序列:n”);BFSTraverse(G,printAdjVex);printf(“n”);四.運行結(jié)果:

      五.實驗心得:

      通過本次課程設(shè)計,對圖的概念有了一個新的認識,在學(xué)習(xí)離散數(shù)學(xué)的時候,總覺得圖是很抽象的東西,但是在學(xué)習(xí)了《數(shù)據(jù)結(jié)構(gòu)與算法》這門課程之后,我慢慢地體會到了其中的奧妙,圖能夠在計算機中存在,首先要捕捉他有哪些具體化、數(shù)字化的信息,比如說權(quán)值、頂點個數(shù)等,這也就說明了想要把生活中的信息轉(zhuǎn)化到計算機中必須用數(shù)字來完整的構(gòu)成一個信息庫,而圖的存在,又涉及到了頂點之間的聯(lián)系。圖分為有向圖和無向圖,而無向圖又是有向圖在權(quán)值雙向相等下的一種特例,如何能在計算機中表示一個雙向權(quán)值不同的圖,這就是一件很巧妙的事情。有了這次課程設(shè)計的經(jīng)驗和教訓(xùn),我能夠很清楚的對自己定一個合適的水平。

      第五篇:數(shù)字測圖實驗指導(dǎo)書

      一、實驗項目:

      實驗項目一:平面圖測繪實習(xí)

      實驗?zāi)康模和ㄟ^實習(xí)使學(xué)生掌握平面圖測繪的基本原理,學(xué)會小平板與皮尺配合測繪大比例尺平面圖的方法和過程。

      實驗任務(wù):學(xué)生分成每組4-5人,每組完成校園內(nèi)部分地物的平面圖測繪。

      實驗器材:小平板儀、皮尺、三角板、比例尺、分規(guī)、大頭針、花桿、工具包

      實驗要求:

      1、掌握平板儀的安置方法;

      2、掌握碎部點的測繪方法;

      3、會用地形圖圖式符號表示地物。

      實驗項目二:掃描矢量化成圖

      實驗?zāi)康模菏箤W(xué)生了解掃描矢量化的基本原理,學(xué)會用矢量化軟件進行地圖數(shù)字化。

      實驗任務(wù):先由指導(dǎo)教師進行演示與操作,學(xué)生認真觀察,指導(dǎo)完成后,學(xué)生方可進行地圖數(shù)字化。

      實驗器材:微機、掃描矢量化軟件、地形圖一幅

      實驗要求:

      1、地圖掃描成柵格圖形;

      2、柵格圖形矢量化。實驗項目三:數(shù)字化測圖系統(tǒng)認識實習(xí)

      實驗?zāi)康模菏箤W(xué)生對數(shù)字化測圖系統(tǒng)的構(gòu)成有較為深刻的認識,從而理解數(shù)字化測圖系統(tǒng)的全過程。

      實驗任務(wù):實驗時,以指導(dǎo)教師進行演示與操作為主,學(xué)生認 真觀察,指導(dǎo)完成后,學(xué)生方可進行相應(yīng)適當(dāng)?shù)牟僮鳌?/p>

      實驗器材:全站儀、數(shù)字化儀、繪圖儀、繪圖軟件、掃描儀。實驗要求:

      1、演示現(xiàn)有地圖數(shù)字化方法(掃描數(shù)字化);

      2、演示全站儀外業(yè)數(shù)據(jù)向微機傳送;

      3、演示內(nèi)業(yè)成圖的方法,使學(xué)生了解成圖軟件;

      4、演示繪圖儀繪圖的過程,使學(xué)生初步認識繪圖儀。

      實驗項目四:全站儀的認識與使用

      實驗?zāi)康模毫私馊緝x的基本結(jié)構(gòu),全站儀的基本操作方法。實驗任務(wù):實驗時,先由指導(dǎo)教師進行演示與操作,學(xué)生認 真觀察,指導(dǎo)完成后,學(xué)生方可進行相應(yīng)的操作。

      實驗器材:每組全站儀1臺,腳架2個,花桿2根,反光鏡2個,記錄板,鉛筆。

      實驗要求:

      1、熟悉全站儀測角模式、測距模式和坐標(biāo)模式下的基本操作;

      2、一個測站上已知數(shù)據(jù)的輸入和碎部點坐標(biāo)的測量方法。

      實驗項目五:野外數(shù)據(jù)采集測量實習(xí)

      實驗?zāi)康模菏箤W(xué)生學(xué)會使用全站儀進行野外大比例尺數(shù)字測圖的基本方法。

      實驗任務(wù):先由指導(dǎo)教師進行演示與操作,學(xué)生認真觀察,指導(dǎo)完成后,學(xué)生方可進行相應(yīng)的操作。

      實驗器材:每組全站儀一臺、腳架兩個、花桿兩個、反光鏡兩個、記錄板、鉛筆

      實驗要求:

      1、熟悉全站儀在數(shù)據(jù)采集模式下的基本操作;

      2、了解外業(yè)數(shù)據(jù)文件的記錄格式;

      3、學(xué)會“一步測量法”野外數(shù)據(jù)測圖的基本方法;

      4、學(xué)會野外工作草圖的繪制和記錄方法;

      5、根據(jù)具體條件每組完成老師指定范圍內(nèi)的地形測量任務(wù)。

      實驗項目六:地形圖的內(nèi)業(yè)編繪和輸出

      實驗?zāi)康模菏箤W(xué)生學(xué)會地形圖的內(nèi)業(yè)編繪和輸出方法。實驗任務(wù):先由指導(dǎo)教師進行演示與操作,學(xué)生認真觀察,指導(dǎo)完成后,學(xué)生方可進行地形圖的編繪。實驗器材:微機、繪圖儀、成圖軟件

      實驗要求:

      1、將實習(xí)5中預(yù)處理過的數(shù)據(jù),利用成圖軟件繪成地形圖;

      2、對所繪地形圖進行編輯修改(包括注記);

      3、學(xué)會地形圖分幅及圖廓的繪制和注記;

      4、將所繪圖形在繪圖儀上輸出。

      二、實驗課考核方式:

      (1)實習(xí)報告:每位參加實驗的同學(xué)必須提交實習(xí)報告。實習(xí)報告主要內(nèi)容包括:實習(xí)的目的、要求及內(nèi)容,實驗原理、方法、步驟,技術(shù)參數(shù),實驗結(jié)果及實驗結(jié)果分析,實習(xí)體會等。(2)實驗課考核方式

      考核方式:評閱實習(xí)報告與儀器操作測驗相結(jié)合。

      下載圖的應(yīng)用 實驗(精選5篇)word格式文檔
      下載圖的應(yīng)用 實驗(精選5篇).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        “思維導(dǎo)圖”實驗方案

        《思維導(dǎo)圖在高中生高級學(xué)習(xí)能力養(yǎng)成中的應(yīng)用》 實 驗 方 案 建三江管局第一中學(xué)課題組 一、課題的提出 思維導(dǎo)圖引入教學(xué)領(lǐng)域以來,已經(jīng)在教育教學(xué)過程中產(chǎn)生了積極的影響。......

        思維導(dǎo)圖應(yīng)用心得體會

        學(xué)習(xí)思維導(dǎo)圖軟件應(yīng)用的心得體會 張和江 一、背景介紹 在本次的學(xué)習(xí)過程中,我知道了“思維導(dǎo)圖”這個學(xué)習(xí)的工具。知道校外的教學(xué)方面很多都應(yīng)用了思維導(dǎo)圖,然后自己才在網(wǎng)上......

        實驗五 電子商務(wù)及其應(yīng)用

        廣東海洋大學(xué)寸金學(xué)院學(xué)生實驗報告書 實驗名稱 系 學(xué)生姓名 實驗六 電子商務(wù)及其應(yīng)用 課程名稱 財務(wù)會計教育 會計電算化 班級學(xué)號 專業(yè)實驗地點 實驗樓303 實驗日期 一、......

        多媒體技術(shù)及應(yīng)用實驗

        實驗一、利用Photoshop制作個性化名片開發(fā)工具:Photoshop CS5 實驗要求:利用合適的素材,再加上自己的創(chuàng)意設(shè)計,設(shè)計出漂亮的一款富有創(chuàng)意的學(xué)生本人的個性化名片。 實驗報告:(1)打......

        實驗6JavaAWT及Swing應(yīng)用

        實驗6 Java AWT及Swing應(yīng)用 實驗內(nèi)容 (1)按鈕有序排列 (2)密碼驗證問題 (3)名片錄入管理界面設(shè)計 (4)文字字體設(shè)計窗體 1、按鈕有序排列 實驗?zāi)康? (1) 了解 GUI 的概念 ;......

        初中化學(xué)實驗常用儀器(帶圖)(精選五篇)

        初中化學(xué)實驗常用儀器 可用于加熱的儀器 直接加熱: 試管 間接加熱(墊石棉網(wǎng)): 燒杯蒸發(fā)皿燃燒匙 錐形瓶圓底燒瓶平底燒瓶 加熱儀器:計量儀器:酒精燈托盤天平盛放物質(zhì)的儀器:廣口瓶......

        uml實驗三 構(gòu)建類圖

        實驗三 構(gòu)建類圖 【實驗?zāi)康摹?1.理解類的基本概念 2.理解類間的關(guān)系 3.掌握類圖的繪制方法 4.掌握簡單的類圖設(shè)計方法 【實驗器材】 1. 計算機一臺; 2. Rational Rose 工......

        軟件工程 實驗四 類圖(5篇范文)

        實驗四類圖 一、實驗?zāi)康?1.理解類的基本概念 2.理解類間的關(guān)系 3.掌握類圖的繪制方法 二、實驗器材 1. 計算機一臺; 2. Rational Rose 工具軟件; 三、實驗內(nèi)容 分析選課系......