⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 图遍历应用_数据结构与算法_数据结构算法_c语言_c 语言之家.htm

📁 严蔚民版的数据结构的完整课件
💻 HTM
📖 第 1 页 / 共 4 页
字号:
                              printf("[%d]    
                              ",ptr-&gt;vertex);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              ptr = ptr-&gt;nextnode;&nbsp;&nbsp;&nbsp;&nbsp; /* 
                              下一个顶点&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp; }<BR>}</P>
                              <P>/* ---------------------------------------- 
                              */<BR>/*&nbsp; 
                              图形的深度优先搜寻法&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>/* ---------------------------------------- 
                              */<BR>void dfs(int current)<BR>{<BR>&nbsp;&nbsp; 
                              graph ptr;</P>
                              <P>&nbsp;&nbsp; visited[current] = 
                              1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              /* 记录已遍历过&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>&nbsp;&nbsp; printf("[%d]&nbsp;&nbsp;&nbsp; 
                              ",current);&nbsp;&nbsp; /* 
                              印出遍历顶点值&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp;&nbsp; 
                              ptr = head[current].nextnode;&nbsp; /* 
                              顶点位置&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>&nbsp;&nbsp; while ( ptr != NULL 
                              )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              /* 遍历至链表尾&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( 
                              visited[ptr-&gt;vertex] == 0 )&nbsp; /* 如过没遍历过 
                              */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              dfs(ptr-&gt;vertex);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              /* 递回遍历呼叫 */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ptr 
                              = 
                              ptr-&gt;nextnode;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              /* 下一个顶点&nbsp;&nbsp; */<BR>&nbsp;&nbsp; }<BR>}</P>
                              <P>&nbsp;</P>
                              <P>/* ---------------------------------------- 
                              */<BR>/*&nbsp; 主程式: 
                              建立图形后,将遍历内容印出.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>/* ---------------------------------------- 
                              */<BR>void main()<BR>{clrscr();</P>
                              <P>while(1)<BR>{<BR>&nbsp;&nbsp; char 
                              c,a;<BR>&nbsp;&nbsp; graph ptr;<BR>&nbsp;&nbsp; 
                              int i;<BR>&nbsp;&nbsp; int node[60][2] = { {1, 
                              10}, {10, 1},&nbsp; /* 
                              边线数组&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {2, 10}, {10, 
                              2},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {2, 3}, {3, 
                              2},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {3, 4}, {4, 
                              3},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {3, 12}, {12, 
                              3},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {4, 13}, {13, 
                              4},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {4, 5}, {5, 
                              4},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {5, 6}, {6, 
                              5},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {5, 7}, {7, 
                              5},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {7, 8}, {8, 
                              7},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {9, 10}, {10, 
                              9},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {10, 11}, {11, 
                              10},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {11, 14}, {14, 
                              11},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {11, 12}, {12, 
                              11},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {12, 15}, {15, 
                              12},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {12, 13}, {13, 
                              12},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {13, 16}, {16, 
                              13},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {14, 17}, {17, 
                              14},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {14, 18}, {18, 
                              14},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {15, 19}, {19, 
                              15},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {16, 20}, {20, 
                              16},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {17, 18}, {18, 
                              17},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {18, 23}, {23, 
                              18},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {18, 19}, {19, 
                              18},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {19, 23}, {23, 
                              19},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {19, 24}, {24, 
                              19},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {19, 20}, {20, 
                              19},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {20, 21}, {21, 
                              20},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {22, 23}, {23, 
                              22},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {24, 25}, 
                              {25,24}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              };<BR>clrscr();<BR>printf("\n\n\n");<BR>printf("/*------------------------------------------------------*/\n");<BR>printf("/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              欢 迎 使 用 本 程 
                              序&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */\n");<BR>printf("/*------------------------------------------------------*/\n");<BR>printf("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              本 程 序 是 有 关 图 的 遍 历 的 算 法 演 示,\n");<BR>printf("如 果 
                              有 不 足 之 处 敬 请 原 谅!\n\n");<BR>printf("请 问 你 是 否 要 运 
                              行 以 下 的 程 序:\n\n");<BR>printf("&nbsp;&nbsp; 图 的 深 
                              度 遍 历 和 广 度 遍 历? 
                              Y/N?\n");<BR>c=getch();<BR>if(c!='y'&amp;&amp;'Y')<BR>exit(0);<BR>&nbsp;clrscr();</P>
                              <P>printf("\n\n");<BR>printf("请 注 意 以 下 为 各 城 市 的 
                              代 码:\n\n");</P>
                              <P>printf("1:乌鲁木齐; 2:呼和浩特; 3:北京; 4:天津; 5:沈阳; 
                              \n");<BR>printf("6:大连; 7:长春; 8:哈尔滨; 9:西宁; 
                              10:兰州;\n");<BR>printf("11:西安; 12:郑州; 13:徐州; 14:成都; 
                              15:武汉; \n");<BR>printf("16:上海; 17:昆明; 18:贵阳; 
                              19:株州; 20:南昌;\n");<BR>printf("21:福州; 22:南宁; 23:柳州; 
                              24:广州; 25:深圳.\n");</P>
                              <P>&nbsp;&nbsp; for (i=1;i&lt;=25;i++ 
                              )<BR>&nbsp;&nbsp; 
                              {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              head[i].vertex=i;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              /* 
                              设定顶点值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              head[i].nextnode=NULL;&nbsp;&nbsp;&nbsp; /* 
                              清除图形指标&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              visited[i]=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              /* 
                              设定遍历初值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; 
                              creategraph(node,60);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              /* 
                              建立图形&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>&nbsp;&nbsp; printf("图 形 的 邻 接 链 表 内 
                              容:\n");<BR>&nbsp;&nbsp; for 
                              (i=1;i&lt;=25;i++)<BR>&nbsp;&nbsp; {&nbsp; 
                              if(i%3==0)printf("\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("顶点%d=&gt;",head[i].vertex); /* 
                              顶点值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              ptr=head[i].nextnode;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              /* 顶点位置&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              while(ptr!=NULL)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              /* 
                              遍历至链表尾&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp; 
                              printf("%d&nbsp; ",ptr-&gt;vertex);&nbsp; /* 
                              印出顶点内容&nbsp;&nbsp;&nbsp;&nbsp; */<BR>&nbsp; 
                              ptr=ptr-&gt;nextnode;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              /* 下一个顶点&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp; 
                              }<BR>printf("\n\n");<BR>printf("请 选 择 你 需 要 的 操 
                              作\n");<BR>printf("1、图形的广度优先遍历请输入:'g'或'G'\n");<BR>printf("2、图形的深度优先遍历请输入:'s'或'S'\n");<BR>&nbsp;c=getch();<BR>&nbsp; 
                              switch(c)<BR>{<BR>&nbsp; 
                              case'g':case'G':<BR>&nbsp;&nbsp; printf("\n请 你 输 入 
                              你 需 要 的 起 始 顶 点:\n");<BR>&nbsp;&nbsp; 
                              scanf("%d",&amp;i);<BR>&nbsp;&nbsp; 
                              clrscr();<BR>&nbsp;&nbsp; 
                              printf("\n\n");<BR>&nbsp;&nbsp; printf("请 注 意 以 下 
                              为 各 城 市 的 代 码:\n\n");<BR>&nbsp;&nbsp; 
                              printf("1:乌鲁木齐; 2:呼和浩特; 3:北京; 4:天津; 5:沈阳; 
                              \n");<BR>&nbsp;&nbsp; printf("6:大连; 7:长春; 8:哈尔滨; 
                              9:西宁; 10:兰州;\n");<BR>&nbsp;&nbsp; printf("11:西安; 
                              12:郑州; 13:徐州; 14:成都; 15:武汉; \n");<BR>&nbsp;&nbsp; 
                              printf("16:上海; 17:昆明; 18:贵阳; 19:株州; 
                              20:南昌;\n");<BR>&nbsp;&nbsp; printf("21:福州; 22:南宁; 
                              23:柳州; 24:广州; 25:深圳.\n");</P>
                              <P>&nbsp;&nbsp; printf("图&nbsp; 形&nbsp; 的&nbsp; 
                              广&nbsp; 度&nbsp; 优&nbsp; 先&nbsp; 遍&nbsp; 历&nbsp; 
                              的&nbsp; 顶&nbsp; 点&nbsp; 内&nbsp; 
                              容:\n");<BR>&nbsp;&nbsp; 
                              bfs(i);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              /* 
                              印出遍历过程&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>&nbsp;&nbsp; 
                              printf("\n");&nbsp;&nbsp;&nbsp;&nbsp; 
                              /*&nbsp;&nbsp;&nbsp;&nbsp; 
                              换行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              */<BR>&nbsp;&nbsp; 
                              break;<BR>&nbsp;case's':case'S':<BR>&nbsp;&nbsp;&nbsp; 
                              printf("\n请 输 入 你 需 要 的 起 始 顶 
                              点:\n");<BR>&nbsp;&nbsp;&nbsp; 
                              scanf("%d",&amp;i);<BR>&nbsp;&nbsp;&nbsp; 
                              clrscr();<BR>&nbsp;&nbsp; 
                              printf("\n\n");<BR>&nbsp;&nbsp;&nbsp; printf("请 注 
                              意 以 下 为 各 城 市 的 代 码:\n\n");<BR>&nbsp;&nbsp;&nbsp; 
                              printf("1:乌鲁木齐; 2:呼和浩特; 3:北京; 4:天津; 5:沈阳; 
                              \n");<BR>&nbsp;&nbsp;&nbsp; printf("6:大连; 7:长春; 
                              8:哈尔滨; 9:西宁; 10:兰州;\n");<BR>&nbsp;&nbsp;&nbsp; 
                              printf("11:西安; 12:郑州; 13:徐州; 14:成都; 15:武汉; 
                              \n");<BR>&nbsp;&nbsp;&nbsp; printf("16:上海; 17:昆明; 
                              18:贵阳; 19:株州; 20:南昌;\n");<BR>&nbsp;&nbsp;&nbsp; 
                              printf("21:福州; 22:南宁; 23:柳州; 24:广州; 
25:深圳.\n");</P>
                              <P>&nbsp;&nbsp;&nbsp; printf("图&nbsp; 形&nbsp; 
                              的&nbsp; 深&nbsp; 度&nbsp; 优&nbsp; 先&nbsp; 遍&nbsp; 
                              历&nbsp; 的&nbsp; 顶&nbsp; 点&nbsp; 内&nbsp; 
                              容:\n");<BR>&nbsp;&nbsp;&nbsp; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -