找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
尊貴會員無限下載附件儲值後自動升級用戶組你準備好成為出色的版主了嗎?
mg刀劍神域神奇寶貝我的英雄人妖3d自慰
上原亞衣口袋妖怪minecrafcadbegieade聖騎士リ13

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

(7月新番)[繁]我要【

(7月新番)[繁]模擬後

[繁]杖與劍的魔劍譚02

[繁]我要【招架】一切

✡ 斗破苍穹 年番/鬥

[繁]魔王軍最強的魔術
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 3585|回復: 2
打印上一主題下一主題

[作業]有關資料結構DFS和BFS作業!!![複製鏈接]

Rank: 2Rank: 2

帖子
375
積分
277 點
潛水值
13963 米
跳轉到指定樓層
樓主
發表於 2010-4-29 03:51 PM|只看該作者|倒序瀏覽
可以麻煩大大們幫我解決這作業的問題嗎?
研究好幾天,程式卻毫無增進,下禮拜就要繳交這作業~
這作業對成績很重要!
拜託大大們,可以幫幫小弟嗎?幫小弟把程式碼打出來~
開發語言用C或C++都可以!萬衷感謝!!!
------------以下是題目-------------
實施adjacent matrix and adjacent list 為一個給定的節點隨機生成具有n和e邊緣。
你的程式需要有一個界面,可以輸入 n(如10)和E(例如,15),
...
瀏覽完整內容,請先 註冊登入會員
分享分享0收藏收藏0支持支持0

使用道具檢舉

hst326 該用戶已被刪除
頭香
發表於 2010-4-29 06:13 PM|只看該作者
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。
回復
下載: 訪客無法瀏覽下載點,請先 註冊登入會員
arou65271

都網路上面找的,
應該不難改

Adj. Matrix
  1. /* Program for creation of adjacency matrix */
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #define max 20

  5. int adj[max][max]; /*Adjacency matrix */
  6. int n; /* Denotes number of nodes in the graph */
  7. void main()
  8. {
  9. int max_edges,i,j,origin,destin;
  10. char graph_type;

  11. p rintf("Enter number of nodes : ");
  12. scanf("%d",&n);
  13. p rintf("Enter type of graph, directed or undirected (d/u) : ");
  14. fflush(stdin);
  15. scanf("%c",&graph_type);

  16. if(graph_type=='u')
  17. max_edges=n*(n-1)/2;
  18. else
  19. max_edges=n*(n-1);

  20. for(i=1;i<=max_edges;i++)
  21. {
  22. p rintf("Enter edge %d( 0 0 to quit ) : ",i);
  23. scanf("%d %d",&origin,&destin);
  24. if( (origin==0) && (destin==0) )
  25. break;
  26. if( origin > n || destin > n || origin<=0 || destin<=0)
  27. {
  28. p rintf("Invalid edge!\n");
  29. i--;
  30. }
  31. else
  32. {
  33. adj[origin][destin]=1;
  34. if( graph_type=='u')
  35. adj[destin][origin]=1;
  36. }
  37. }/*End of for*/

  38. p rintf("The adjacency matrix is :\n");
  39. for(i=1;i<=n;i++)
  40. {
  41. for(j=1;j<=n;j++)
  42. p rintf("%4d",adj[i][j]);
  43. p rintf("\n");
  44. }
  45. }/*End of main()*/
複製代碼


BFS and DFS
  1. /*TO FIND THE BFS AND DFS OF THE GIVEN GRAPH*/

  2. #define size 20

  3. int a[10][10],vertex[10],n,e;

  4. /*STACK FUNCTIONS*/
  5. #define bottom -1

  6. int stack[size],top=bottom;
  7. int stackempty()
  8. {
  9. return(top=bottom) ? 1:0;
  10. }
  11. int stackfull()
  12. {
  13. return(top==size-1) ? 1:0;
  14. }

  15. void push(int item)
  16. {
  17. if(stackfull())
  18. p rintf("7

  19. STACK IS FULL");
  20. else
  21. stack[++top]=item;
  22. }

  23. int pop()
  24. {
  25. if(stackempty())
  26. {
  27. p rintf("7

  28. STACK IS EMPTY");
  29. return -1;
  30. }
  31. else
  32. return stack[top--];
  33. }

  34. int peep()
  35. {
  36. if(stackempty())
  37. {
  38. p rintf("7

  39. STACK IS EMPTY");
  40. return -1;
  41. }
  42. else
  43. return stack[top];
  44. }

  45. /* QUEUE FUNCTIONS */
  46. #define start -1

  47. int q[size];
  48. int f=start,r=start;

  49. int qempty(){ return(f==r)?1:0; }
  50. int qfull(){ return(r==size-1)?1:0;}

  51. void addq(int c)
  52. {
  53. if(qfull())
  54. p rintf("7

  55. QUEUE IS FULL");
  56. else
  57. q[++r]=c;
  58. }

  59. int delq()
  60. {
  61. if(qempty())
  62. {
  63. p rintf("7

  64. QUEUE IS EMPTY");
  65. return -1;
  66. }
  67. else
  68. return q[++f];
  69. }
  70. // j is unvisited adjecent vertex to i
  71. int adjvertex(int i)
  72. {
  73. int j;
  74. for(j=0;j
  75. if(a[i][j]==1&&vertex[j]==0)
  76. return j;
  77. return n;
  78. }

  79. int visitall()
  80. {
  81. int i;
  82. for(i=0;i
  83. if(vertex[i]==0)
  84. return 0;
  85. return 1;
  86. }

  87. /*FUNCTION FOR BFS*/
  88. void bfs()
  89. {
  90. int i,j,k,cur=0;//current vertex is startting vertex
  91. for(i=0;i
  92. vertex[i]=0;//not visited
  93. p rintf("

  94. BFS path => V%d ",cur+1);
  95. addq(cur);
  96. vertex[cur]=1;//marking visited vertex
  97. while(!visitall())
  98. {
  99. if(qempty())
  100. {
  101. p rintf("7

  102. GRAPH IS DISCONNECTED");
  103. break;
  104. }
  105. cur=delq();
  106. //visit all vertices which are adjecent to current vertex
  107. for(j=0;j
  108. {
  109. //adjecent are not visited
  110. if(a[cur][j]==1&&vertex[j]==0)
  111. {
  112. p rintf("V%d ",j+1);
  113. addq(j);
  114. //marking visited vertex
  115. vertex[j]=1;
  116. }
  117. }
  118. }
  119. }

  120. /*FUNCTION FOR DFS*/
  121. void dfs()
  122. {
  123. int i,j,k,cur=0;//current vertex is startting vertex
  124. for(i=0;i
  125. vertex[i]=0;//not visited
  126. p rintf("

  127. DFS path => V%d ",cur+1);
  128. push(cur);
  129. vertex[cur]=1;//marking visited vertex
  130. while(!visitall())
  131. {
  132. do
  133. {
  134. cur=adjvertex(peep());
  135. if(cur==n) pop();
  136. }
  137. while(cur==n&&!stackempty());
  138. if(stackempty())
  139. {
  140. p rintf("7

  141. GRAPH IS DISCONNECTED");
  142. break;
  143. }
  144. if(cur!=n)
  145. {
  146. p rintf(" V%d ",cur+1);
  147. push(cur);
  148. vertex[cur]=1;//marking visited vertex
  149. }
  150. }
  151. }

  152. /*MAIN PROGRAM*/
  153. void main()
  154. {
  155. int i,j,k;
  156. clrscr();
  157. for(i=0;i<10;i++)
  158. for(j=0;j<10;j++)
  159. a[i][j]=0;

  160. p rintf("
  161. ENTER NO OF VERTICES & EDGES OF UNDIRECTED GRAPH : ");
  162. scanf("%d%d",&n,&e);

  163. p rintf("
  164. ENTER EDGES AS PAIR OF VERTICES

  165. ");
  166. for(k=1;k<=e;k++)
  167. {
  168. p rintf("EDGE %d =>",k);
  169. scanf("%d%d",&i,&j);
  170. //for undirected graph
  171. a[i-1][j-1]=1;
  172. }

  173. dfs();
  174. bfs();
  175. getch();
  176. }
複製代碼
...
瀏覽完整內容,請先 註冊登入會員
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。

使用道具檢舉

Rank: 2Rank: 2

帖子
375
積分
277 點
潛水值
13963 米
3
發表於 2010-5-1 05:40 PM|只看該作者
謝謝妳喔~
可是小弟還是改不出來@@"
對了~DFS和BFS那邊程式碼錯很多耶~
都不能跑@@"
可以麻煩大大幫我把這一題完整打出來嗎?
小弟笨笨的,好難的作業啊!!!

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部