數(shù)據(jù)結(jié)構(gòu)-無向圖的操作-課程設(shè)計-實驗報告_第1頁
已閱讀1頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  數(shù) 據(jù) 結(jié) 構(gòu) 課 程 設(shè) 計</p><p>  設(shè)計題目: 無向圖的操作 </p><p>  學(xué)生姓名: </p><p>  專業(yè)班級: </p><p>  指導(dǎo)教師: </p&

2、gt;<p>  完成時間: </p><p> 課題名稱無向圖的操作</p><p> 院 系年級專業(yè)</p><p> 學(xué) 號姓 名成 績</p><p> 課題設(shè)計目的與設(shè)計意義1、課題設(shè)計目的:一、熟悉圖的兩種常用的存儲結(jié)構(gòu),鄰接矩陣。二、建立有向圖,用鄰接表存儲結(jié)構(gòu)存儲。

3、 三、在鄰接表存儲結(jié)構(gòu)上實現(xiàn)深度優(yōu)先遍歷。2、課題設(shè)計意義:一、能夠熟悉關(guān)于無向圖鄰接矩陣和無向圖鄰接表的輸出建立等操作。二、能夠理解關(guān)于無向圖的基本操作有何目的與意義。三、將以上的理解加以運用與操作。指導(dǎo)教師:年 月 日</p><p><b>  目 錄</b></p><p>  第一章 課程設(shè)計的目的與意義1&l

4、t;/p><p>  第二章 課程設(shè)計的內(nèi)容與要求1</p><p>  2.1課程設(shè)計的內(nèi)容1</p><p><b>  2.1.1定義1</b></p><p><b>  2.1.2操作2</b></p><p>  2.2課程設(shè)計的要求2</p>

5、<p>  第三章 需求分析2</p><p><b>  3.1原理2</b></p><p><b>  3.2要求3</b></p><p>  3.3系統(tǒng)總框架3</p><p><b>  3.4運行環(huán)境3</b></p><

6、p>  3.5程序的輸入(包含輸入的數(shù)據(jù)格式和說明)4</p><p><b>  3.6開發(fā)工具4</b></p><p>  第四章 算法與描述4</p><p>  4.1圖的深度優(yōu)先遍歷4</p><p>  4.2具體過程應(yīng)為4</p><p><b>  第五

7、章 源程序5</b></p><p>  第六章 運行結(jié)果12</p><p>  第七章 結(jié)束語17</p><p>  第八章 參考文獻18</p><p>  第一章 課程設(shè)計的目的與意義</p><p>  圖是一種復(fù)雜的非線性結(jié)構(gòu)。在人工智能、工程、數(shù)學(xué)、物理、化學(xué)、計算機科學(xué)等領(lǐng)域中,圖

8、結(jié)構(gòu)有著廣泛的應(yīng)用。</p><p>  在線性結(jié)構(gòu)中,結(jié)點之間的關(guān)系是線性關(guān)系,除開始結(jié)點和終端結(jié)點外,每個結(jié)點只有一個直接前趨和直接后繼。在樹形結(jié)構(gòu)中,結(jié)點之間的關(guān)系實質(zhì)上是層次關(guān)系,除根結(jié)點之外,每個結(jié)點都只能有一個雙親(前趨),但每個結(jié)點可以有零個或多個孩子(后繼)。因此,層次關(guān)系是非線性的。但是,它在樹的結(jié)點之間建立了一個層次結(jié)構(gòu);同層次上的每個結(jié)點可以和下一層的零個或多個結(jié)點(即孩子)相關(guān),但只能和上

9、一層的一個結(jié)點(即雙親)相關(guān)(根節(jié)點除外)。然而在土結(jié)構(gòu)中,對結(jié)點(圖中常稱為頂點)的前趨和后繼個數(shù)都是不加限制的,即結(jié)點之間的關(guān)系是任意的。圖中任意兩個結(jié)點之間都可能相關(guān)。</p><p>  鄰接表(Adjacency List)是圖的一種順序存儲與鏈式存儲結(jié)合的存儲方法,類似于樹的孩子鏈表表示法。由于它只考慮非零元素,因而節(jié)省了零元素所占的存儲空間。它對于無向圖和有向圖都適用。</p><

10、;p>  本學(xué)期我們學(xué)了很多圖的存儲結(jié)構(gòu),有鄰接矩陣。鄰接表等。其中鄰接矩陣和鄰接表為圖的主要存儲結(jié)構(gòu)。圖的鄰接矩陣存儲結(jié)構(gòu)的主要特點是吧圖的邊信息與鏈式存數(shù)相結(jié)合的存儲方法。從空間性能上說,圖越洗漱鄰接表的空間效率也相應(yīng)的越高。從時間性能上來說,鄰接表在圖的算法中時間代價較鄰接矩陣要第。</p><p>  本課程設(shè)計主要是實現(xiàn)使用鄰接表存儲結(jié)構(gòu)存儲一個圖,并在所存儲的圖中實現(xiàn)深度優(yōu)先和廣度優(yōu)先遍歷以及其

11、鏈表結(jié)構(gòu)的輸出。通過實習(xí)鞏固并提高我的C語言知識,并初步了解Visual C++的知識,提高編程能力與專業(yè)水平。</p><p>  第二章 課程設(shè)計的內(nèi)容與要求</p><p>  2.1課程設(shè)計的內(nèi)容</p><p><b>  2.1.1定義</b></p><p>  有向圖與無向圖:圖是一種復(fù)雜的非線性結(jié)構(gòu)。圖

12、G由兩個集合V和E組成,記為G=(V,E),其中V是頂點的有窮非空集合,E是V中頂點偶對(稱為邊)的有窮集。通常,也將圖G的頂點集和邊集分別記為V(G)和E(G)。E(G)可以是空集,若E(G)為空,則圖G只有頂點而沒有邊。若圖G中的每條邊都是有方向的,則稱G為有向圖;若圖G中的每條邊都是沒有方向的,則稱G為無向圖。</p><p>  鄰接矩陣:鄰接矩陣是表示定點之間相鄰關(guān)系的矩陣。</p>&l

13、t;p>  鄰接表:對于圖G中的每個頂點vi,該方法把所有鄰接于vi的頂點vj鏈成一個單鏈變,這個單鏈表就成為頂點vi的鄰接表。</p><p>  2.1.2操作 熟悉掌握關(guān)于無向圖鄰接表和鄰接矩陣的運用以及操作,包括:</p><p>  無向圖鄰接矩陣的建立、</p><p>  無向圖鄰接矩陣的輸出、</p><p>  無向圖

14、鄰接表的建立、</p><p>  無向圖鄰接表的輸出、</p><p>  無向圖鄰接表的深度遍歷、</p><p>  無向圖鄰接矩陣的深度遍歷、</p><p>  無向圖鄰接表的廣度遍歷、</p><p>  無向圖鄰接矩陣的廣度遍歷。</p><p>  2.2課程設(shè)計的要求</

15、p><p>  一、能夠熟悉關(guān)于無向圖鄰接矩陣和無向圖鄰接表的輸出建立等操作。</p><p>  二、能夠理解關(guān)于無向圖的基本操作有何目的與意義。</p><p>  三、將以上的理解加以運用與操作。</p><p><b>  第三章 需求分析</b></p><p><b>  3.1

16、原理</b></p><p>  本課題要求采取鄰接表的存儲結(jié)構(gòu)。鄰接表是一種鏈式的存儲結(jié)構(gòu),在鄰接表中,對圖中每個頂點建立一個單鏈表,第i個單鏈表中的結(jié)點表示依附于頂點Vi的邊(對有向圖是以頂點Vi為尾的弧)。每個結(jié)點由3個域組成,其中鄰接點域(adjvex)指示與頂點Vi鄰接的點在圖中的位置,鏈域(nextarc)指示下一條邊或弧的結(jié)點;數(shù)據(jù)域(info)存儲和邊或弧相關(guān)的信息,如權(quán)值等。 <

17、;/p><p>  所以一開始必須先定義鄰接表的邊結(jié)點類型以及鄰接表類型,并對鄰接表進行初始化,然后根據(jù)所輸入的相關(guān)信息,包括圖的頂點數(shù)、邊數(shù)、是否為有向,以及各條邊的起點與終點序號,建立圖的鄰接表。此時要分兩種情況:有向圖與無向圖。對于無向圖,一條邊的兩的個頂點,互為鄰接點,所以在存儲時,應(yīng)向起點的單鏈表表頭插入一邊結(jié)點,即終點。同時將終點的單鏈表表頭插入一邊結(jié)點,即起點。對于有向圖,只能向起點的單鏈表的表頭插入一

18、個邊結(jié)點,即終點。但不能反過來。至于鄰接表的輸出,由于不了解C++中的繪圖操作,故采用for語句輸出各結(jié)點,并配合一些符號完成鄰接表的輸出</p><p>  當圖比較稀疏時,鄰接表存儲是最佳的選擇。并且在存儲圖的時候鄰接表要比鄰接矩陣節(jié)省時間。在圖存儲在系統(tǒng)中后,我們有時還需要對圖進行一些操作,如需要添加一個頂點,修改一個頂點,或者刪除一個頂點,而這些操作都需要圖的深度優(yōu)先及廣度優(yōu)先遍歷為基礎(chǔ)。本系統(tǒng)將構(gòu)建一個

19、圖,圖的結(jié)點存儲的是int 型數(shù)據(jù)。運行本系統(tǒng)可對該圖進行鏈式結(jié)構(gòu)輸出、深度優(yōu)先及廣度優(yōu)先遍歷。</p><p><b>  3.2要求</b></p><p> ?。?)建立基于鄰接表的圖</p><p><b>  (2)對圖進行遍歷</b></p><p><b> ?。?)輸出遍歷

20、結(jié)果</b></p><p><b>  3.3系統(tǒng)總框架</b></p><p>  系統(tǒng)的主要功能是用鄰接表存儲結(jié)構(gòu)在圖中對頂點進行插入、刪除、修改操作,并對圖進行深度優(yōu)先及廣度優(yōu)先遍歷??偪蚣苋缦虏D進行深度優(yōu)先及廣度優(yōu)先遍歷??偪蚣苋缦拢?lt;/p><p><b>  3.4運行環(huán)境</b></p

21、><p> ?。?)硬件:計算機486/64M以上 (2)操作系統(tǒng): WIN9x 以上/WIN2000/WIN XP/WIN ME (3)相關(guān)軟件:vistualC++</p><p>  3.5程序的輸入(包含輸入的數(shù)據(jù)格式和說明) (1)輸入頂點數(shù),及各頂點信息(數(shù)據(jù)格式為整形) (2)輸入邊數(shù),及權(quán)值(數(shù)據(jù)格式為整形)</p><p>&l

22、t;b>  3.6開發(fā)工具</b></p><p><b>  C++語言</b></p><p><b>  第四章 算法與描述</b></p><p>  4.1圖的深度優(yōu)先遍歷 假設(shè)初始狀態(tài)是圖中所有頂點未曾被訪問,深度優(yōu)先遍歷可以從圖的初始點出發(fā),訪問初始點,然后依次從v未被訪問的鄰接點出發(fā)

23、深度優(yōu)先遍歷圖,直至圖中所有和v有路徑相通的頂點都被訪問到;若此時仍有頂點未被訪問到,則從另一個未被訪問的頂點出發(fā),重復(fù)上述過程,直至所有點都被訪問到為止。這是一個遞歸的過程。所以在實現(xiàn)深度優(yōu)先遍歷的過程中必須遞歸調(diào)用深度優(yōu)先搜索函數(shù)。而且在深度優(yōu)先搜索函數(shù)中必須設(shè)一標志數(shù)組以標記結(jié)點是否被訪問。</p><p><b>  4.2具體過程應(yīng)為</b></p><p>

24、;  先訪問初始點Vi,并標志其已被訪問。此時定義一指向邊結(jié)點的指針p,并建立一個while()循環(huán),以指針所指對象不為空為控制條件,當Vi的鄰接點未被訪問時,遞歸調(diào)用深度優(yōu)先遍歷函數(shù)訪問之。然后將p指針指向下一個邊結(jié)點。</p><p>  圖的存儲與遍歷算法-數(shù)據(jù)結(jié)構(gòu)一樣,也是從初始點Vi出發(fā)開始訪問,訪問初始點,標志其已被訪問,并將已訪問過的初始點序號i入隊。當隊列非空時進行循環(huán)處理,刪除隊首元素,第一次執(zhí)

25、行時k的值為i,即front=(front+1)%MaxLength。然后取Vk鄰接表的表頭指針int k=q[front]; edgenode* p=GL[k]。當邊結(jié)點指針p不為空時,通過while()循環(huán),并以p是否為空為控制條件,依次搜索Vk的每一個結(jié)點。若Vj沒有被訪問過則進行處理。訪問完后,將p指向p->next。其中的while循環(huán)部分的代碼如下:</p><p>  while(p!=NUL

26、L){//依次搜索Vk的每一個結(jié)點int j=p->adjvex; //Vj為Vk的一個鄰接點if(!visited[j]){ //若Vj沒有被訪問過則進行處理cout<<j<<'' '';visited[j]=true;rear=(rear+1)%MaxLength;q[rear]=j;}p=p->next;}這樣就可以訪問所有結(jié)點,完成圖的廣度

27、優(yōu)先遍歷。</p><p><b>  第五章 源程序</b></p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  typedef int datatype;</p><p>  typede

28、f char vextype;</p><p>  #define maxsize 64</p><p>  typedef struct pnode</p><p><b>  {</b></p><p>  datatype data;</p><p>  struct pnode *next

29、;</p><p>  }linklist;</p><p>  typedef struct</p><p><b>  {</b></p><p>  linklist *front,*rear;</p><p>  }linkqueue;</p><p>  link

30、queue *q;</p><p>  typedef struct</p><p><b>  {</b></p><p>  char vexs[maxsize];</p><p>  int arcs[maxsize][maxsize];</p><p>  int vexnum,arcnu

31、m;</p><p><b>  }graph;</b></p><p>  graph *ga;</p><p>  typedef struct node</p><p><b>  {</b></p><p>  int adjvex;</p><p

32、>  struct node *next;</p><p>  }edgenode;</p><p>  typedef struct</p><p><b>  {</b></p><p>  vextype topvex;</p><p>  edgenode *link;</p&

33、gt;<p><b>  }topnode;</b></p><p>  topnode gl[20];</p><p>  void setnull(linkqueue *q)</p><p><b>  {</b></p><p>  q->front=(linklist *

34、)malloc(sizeof(linklist));</p><p>  q->front->next=NULL;</p><p>  q->rear=q->front;</p><p><b>  }</b></p><p>  int empty(linkqueue *q)</p>

35、<p><b>  {</b></p><p>  if(q->front==q->rear)</p><p><b>  return 1;</b></p><p><b>  else</b></p><p><b>  return 0

36、;</b></p><p><b>  }</b></p><p>  void enqueue(linkqueue *q,datatype x)</p><p><b>  {</b></p><p>  q->rear->next=(linklist *)malloc(s

37、izeof(linklist));</p><p>  q->rear=q->rear->next;</p><p>  q->rear->data=x;</p><p>  q->rear->next=NULL;</p><p><b>  }</b></p>&

38、lt;p>  int dequeue(linkqueue *q)</p><p><b>  {</b></p><p>  linkqueue *s;</p><p>  if(empty(q))</p><p><b>  {</b></p><p>  print

39、f("隊為空!");</p><p>  return NULL;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  s=q->fr

40、ont;</p><p>  q->front=q->front->next;</p><p><b>  free(s);</b></p><p>  return(q->front->data);</p><p><b>  }</b></p><

41、;p><b>  }</b></p><p>  void creat_juzhe(graph *ga)//無向圖鄰接矩陣的建立</p><p><b>  {</b></p><p>  int i,j,k;</p><p>  getchar();</p><p>

42、  printf("請輸入%d個元素:",ga->vexnum);</p><p>  for(i=0;i<ga->vexnum;i++)</p><p>  scanf("%c",&ga->vexs[i]);</p><p>  for(i=0;i<ga->vexnum;i++)&

43、lt;/p><p>  for(j=0;j<ga->vexnum;j++)</p><p>  ga->arcs[i][j]=0;</p><p>  printf("請輸入鄰接的倆個頂點的下標:\n");</p><p>  for(k=0;k<ga->arcnum;k++)</p>

44、<p><b>  {</b></p><p>  scanf("%d%d",&i,&j);</p><p>  ga->arcs[i][j]=1;</p><p>  ga->arcs[j][i]=1;</p><p><b>  }</b&

45、gt;</p><p><b>  }</b></p><p>  void print_juzhe(graph *ga)//無向圖鄰接矩陣的輸出</p><p><b>  {</b></p><p><b>  int i,j;</b></p><p&g

46、t;  printf("建立好后的無向圖的鄰接矩陣為:\n");</p><p>  for(i=0;i<ga->vexnum;i++)</p><p><b>  {</b></p><p>  printf("%c\t",ga->vexs[i]);</p><p&

47、gt;  for(j=0;j<ga->vexnum;j++)</p><p>  printf("%d\t",ga->arcs[i][j]);</p><p>  printf("\n\n\n");</p><p><b>  }</b></p><p><

48、b>  }</b></p><p>  void creat_ljbiao(topnode gl[],int n,int e)//無向圖鄰接表的建立</p><p><b>  {</b></p><p>  int i,j,k;</p><p>  edgenode *p;</p>&l

49、t;p>  getchar();</p><p>  printf("請輸入%d個頂點的元素:",n);</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p>  scanf("%c",&gl[i].top

50、vex);</p><p>  gl[i].link=NULL;</p><p><b>  }</b></p><p>  printf("請輸入要鄰接的倆個頂點的下標:\n");</p><p>  for(k=0;k<e;k++)</p><p><b>

51、  {</b></p><p>  scanf("%d%d",&i,&j);</p><p>  p=(edgenode *)malloc(sizeof(edgenode));</p><p>  p->adjvex=j;</p><p>  p->next=gl[i].link;&

52、lt;/p><p>  gl[i].link=p;</p><p>  p=(edgenode *)malloc(sizeof(edgenode));</p><p>  p->adjvex=i;</p><p>  p->next=gl[j].link;</p><p>  gl[j].link=p;<

53、/p><p><b>  }</b></p><p><b>  }</b></p><p>  void print_ljbiao(topnode gl[],int n)//無向圖鄰接表的輸出</p><p><b>  {</b></p><p><

54、;b>  int i;</b></p><p>  edgenode *p;</p><p>  printf("建立后的無向圖的鄰接表為:\n");</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p

55、>  printf("%c\t",gl[i].topvex);</p><p>  p=gl[i].link;</p><p><b>  while(p)</b></p><p><b>  {</b></p><p>  printf("%d\t",

56、p->adjvex);</p><p>  p=p->next;</p><p><b>  }</b></p><p>  printf("\n");</p><p><b>  }</b></p><p><b>  }</

57、b></p><p>  int visited_lj[20]={0};</p><p>  void DFSL(topnode gl[],int i)//無向圖鄰接表的深度遍歷</p><p><b>  {</b></p><p>  edgenode *p;</p><p>  pri

58、ntf("%c",gl[i].topvex);</p><p>  visited_lj[i]=1;</p><p>  p=gl[i].link;</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  if(visite

59、d_lj[p->adjvex]==0)</p><p>  DFSL(gl,p->adjvex);</p><p>  p=p->next;</p><p><b>  }</b></p><p><b>  }</b></p><p>  int visi

60、ted[20]={0};</p><p>  void DFS(graph *ga,int i)//無向圖鄰接矩陣的深度遍歷</p><p><b>  {</b></p><p><b>  int j,n;</b></p><p>  printf("%c",ga->v

61、exs[i]);</p><p>  visited[i]=1;</p><p>  for(j=0;j<ga->vexnum;j++)</p><p>  if((ga->arcs[i][j]==1)&&(visited[j]==0))</p><p>  DFS(ga,j);</p><

62、;p><b>  }</b></p><p>  int visited_ljb[20]={0};</p><p>  void BFSL(topnode gl[],int k)//無向圖鄰接表的廣度遍歷</p><p><b>  {</b></p><p><b>  int i

63、;</b></p><p>  edgenode *p;</p><p>  linkqueue Q;</p><p>  setnull(&Q);</p><p>  printf("%c",gl[k].topvex);</p><p>  visited_ljb[k]=1;&

64、lt;/p><p>  enqueue(&Q,k);</p><p>  while(!empty(&Q))</p><p><b>  {</b></p><p>  i=dequeue(&Q);</p><p>  p=gl[i].link;</p><

65、p>  while(p!=NULL)</p><p><b>  {</b></p><p>  if(!visited_ljb[p->adjvex])</p><p><b>  {</b></p><p>  printf("%c",gl[p->adjvex

66、].topvex);</p><p>  visited_ljb[p->adjvex]=1;</p><p>  enqueue(&Q,p->adjvex);</p><p><b>  }</b></p><p>  p=p->next;</p><p><b&g

67、t;  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  int visited_jz[20]={0};</p><p>  void BFS(graph *ga,int k)//無向圖鄰接矩陣的廣度遍歷</p>

68、<p><b>  {</b></p><p><b>  int i,j;</b></p><p>  linkqueue Q;</p><p>  setnull(&Q);</p><p>  printf("%c",ga->vexs[k]);<

69、;/p><p>  visited_jz[k]=1;</p><p>  enqueue(&Q,k);</p><p>  while(!empty(&Q))</p><p><b>  {</b></p><p>  i=dequeue(&Q);</p><

70、;p>  for(j=0;j<ga->vexnum;j++)</p><p>  if((ga->arcs[i][j]==1)&&(!visited_jz[j]))</p><p><b>  {</b></p><p>  printf("%c",ga->vexs[j]);&l

71、t;/p><p>  visited_jz[j]=1;</p><p>  enqueue(&Q,j);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>&

72、lt;p>  void main()</p><p><b>  {</b></p><p>  int i=1,j,n,e;</p><p><b>  graph ga;</b></p><p>  topnode *gl;</p><p><b>  w

73、hile(i)</b></p><p><b>  {</b></p><p>  printf("\n0:無向圖鄰接矩陣的建立\n1:無向圖鄰接表的建立\n2:鄰接矩陣的輸出\n3:鄰接表的輸出\n4:鄰接矩陣的深度遍歷\n5:鄰接表的深度遍歷\n6:鄰接矩陣的廣度遍歷\n7:鄰接表的廣度遍歷\n");</p><

74、p>  scanf("%d",&i);</p><p><b>  switch(i)</b></p><p><b>  {</b></p><p>  case 0:printf("請輸入頂點數(shù)和邊數(shù):");</p><p>  scanf(

75、"%d%d",&ga.vexnum,&ga.arcnum);</p><p>  creat_juzhe(&ga);</p><p><b>  break;</b></p><p>  case 1:printf("請輸入頂點數(shù)和邊數(shù):");</p><p&g

76、t;  scanf("%d%d",&n,&e);</p><p>  creat_ljbiao(&gl,n,e);</p><p><b>  break;</b></p><p>  case 2:print_juzhe(&ga);</p><p><b>

77、  break;</b></p><p>  case 3:print_ljbiao(&gl,n);</p><p><b>  break;</b></p><p>  case 4:printf("請輸入要遍歷的起始位置:");</p><p>  scanf("%d

78、",&j);</p><p>  printf("鄰接矩陣深度遍歷后的結(jié)果為:");</p><p>  DFS(&ga,j);</p><p><b>  break;</b></p><p>  case 5:printf("請輸入要遍歷的起始位置:"

79、);</p><p>  scanf("%d",&j);</p><p>  printf("鄰接表深度遍歷后的結(jié)果為:");</p><p>  DFSL(&gl,j);</p><p><b>  break;</b></p><p> 

80、 case 6:printf("請輸入要遍歷的起始位置:");</p><p>  scanf("%d",&j);</p><p>  printf("鄰接矩陣廣度遍歷后的結(jié)果為:");</p><p>  BFS(&ga,j,n);</p><p><b>

81、;  break;</b></p><p>  case 7:printf("請輸入要遍歷的起始位置:");</p><p>  scanf("%d",&j);</p><p>  printf("鄰接表廣度遍歷后的結(jié)果為:");</p><p>  BFSL(&

82、amp;gl,j);</p><p><b>  break;</b></p><p><b>  }</b></p><p>  printf("\n0:結(jié)束\n1:繼續(xù)\n");</p><p>  scanf("%d",&i);</p>

83、;<p><b>  }</b></p><p><b>  }</b></p><p><b>  第六章 運行結(jié)果</b></p><p><b>  主菜單界面如下:</b></p><p>  無向圖鄰接矩陣的建立:</p>

84、;<p>  無向圖鄰接矩陣的輸出:</p><p>  無向圖鄰接矩陣的深度遍歷:</p><p>  無向圖鄰接矩陣的廣度遍歷:</p><p>  無向圖鄰接表的建立:</p><p>  無向圖鄰接表的輸出:</p><p>  無向圖鄰接表的深度遍歷:</p><p> 

85、 無向圖鄰接表的廣度遍歷:</p><p><b>  第七章 結(jié)束語</b></p><p>  轉(zhuǎn)眼,為期兩周的《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計實習(xí)即將結(jié)束了。在這次實習(xí)中,自己的C語言知識和數(shù)據(jù)結(jié)構(gòu)知識得到了鞏固,編程能力也有了一定的提高。同時也學(xué)會了解決問題的方法??偨Y(jié)起來,自己主要有以下幾點體會: </p><p>  必須牢固掌握基礎(chǔ)知識。由于

86、C語言是大一所學(xué)知識,有所遺忘,且未掌握好這學(xué)期所學(xué)的《數(shù)據(jù)結(jié)構(gòu)》這門課,所以在實習(xí)之初感到棘手。不知如何下手,但在后來的實習(xí)過程中自己通過看書和課外資料,并請教其他同學(xué),慢慢地對C語言和數(shù)據(jù)結(jié)構(gòu)知識有所熟悉。這時才逐漸有了思路。所以,這次實習(xí)之后,我告誡自己:今后一定要牢固掌握好專業(yè)基礎(chǔ)知識。 </p><p>  2.必須培養(yǎng)嚴謹?shù)目茖W(xué)態(tài)度。自己在編程時經(jīng)常因為一些類似于“少了分號”的小錯誤而導(dǎo)致錯誤,不夠認

87、真細致,這給自己帶來了許多麻煩。編程是一件十分嚴謹?shù)氖虑?,容不得馬虎。所以在今后自己一定要培養(yǎng)嚴謹?shù)目茖W(xué)態(tài)度。我想這不僅是對于程序設(shè)計,做任何事都應(yīng)如此。 </p><p>  3.這次課程設(shè)計也讓我充分認識到《數(shù)據(jù)結(jié)構(gòu)》這門課的重要性。它給我們一個思想和大綱,讓我們在編程時容易找到思路,不至于無章可循。同時它也有廣泛的實際應(yīng)用。 </p><p>  總之,在這次實習(xí)中,自己的C語言以及

88、數(shù)據(jù)結(jié)構(gòu)知識得到提高,編程能力也得到了提高。</p><p><b>  第八章 參考文獻</b></p><p>  [1]唐策善,黃劉生等編著.數(shù)據(jù)結(jié)構(gòu)—用C語言描述.高等教育出版社,1995</p><p>  [2]徐德民.最新C語言程序設(shè)計教程.電子工業(yè)出版社,1992</p><p>  [3]嚴蔚敏,陳文博

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論