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

📄 ds7.3.2.htm

📁 这是清华大学所用的数据结构的电子版教材
💻 HTM
📖 第 1 页 / 共 2 页
字号:
&quot;Times New Roman&quot;">志数组。并且,为了顺次访问路径长度为</span><span lang="EN-US">2</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">、</span><span lang="EN-US">3</span><span style="font-family:
宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:&quot;Times New Roman&quot;">、…的顶点,需附设队列以存储已被访问的路径长度为</span><span lang="EN-US">1</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;
mso-hansi-font-family:&quot;Times New Roman&quot;">、</span><span lang="EN-US">2</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">、…</span><span style="mso-spacerun: yes" lang="EN-US">&nbsp; 
</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;
mso-hansi-font-family:&quot;Times New Roman&quot;">的顶点。</span></font></b></font></p>
<p class="MsoNormal" style="text-indent:21.0pt"><font size="5" color="#FFFFFF"><b><span style="font-family:宋体;
mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:&quot;Times New Roman&quot;">从图的某一点</span><span lang="EN-US">v</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;
mso-hansi-font-family:&quot;Times New Roman&quot;">出发,递归地进行广度优先遍历的过程如算法</span></b></font><font size="5" color="#FFFFFF"><b>下:</b></font></p>
<p class="MsoNormal" style="text-indent: 0; margin: 0"><span lang="EN-US"><font color="#FFFFFF"><b><font size="5">void<span style="mso-spacerun: yes">&nbsp; 
</span>BFSTraverse(Graph G, Status(*Visit)(int v))</font></b></font></span></p>
<p class="MsoNormal" style="text-indent: 0; margin: 0"><b><font size="5" color="#FFFFFF"><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">{/*</span></font><font color="#FFFFFF" size="4"><span style="mso-bidi-font-size: 10.0pt"><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">按广度优先非递归遍历图</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">G</span><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">。使用辅助队列</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">Q</span><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">和访问标志数组</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">visited</span></span></font><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><font size="5" color="#FFFFFF">*/<o:p>
</o:p>
</font></span></b></p>
<p class="MsoNormal" style="text-indent: 0; margin: 0"><span lang="EN-US"><span style="mso-spacerun: yes"><font color="#FFFFFF"><b><font size="5">&nbsp; 
&nbsp;</font></b></font></span><font color="#FFFFFF"><b><font size="5">for 
(v=0;v&lt;G,vexnum;++v)</font></b></font></span></p>
<p class="MsoNormal" style="text-indent: 0; margin: 0"><span lang="EN-US"><span style="mso-spacerun: yes"><font color="#FFFFFF"><b><font size="5">&nbsp;&nbsp; 
</font></b></font></span><font color="#FFFFFF"><b><font size="5">visited[v]=FALSE</font></b></font></span></p>
<p class="MsoNormal" style="text-indent: 0; margin: 0"><span lang="EN-US"><span style="mso-spacerun: yes"><font color="#FFFFFF"><b><font size="5">&nbsp;&nbsp; 
</font></b></font></span><font color="#FFFFFF"><b><font size="5">InitQueue(Q);<span style="mso-spacerun: yes">&nbsp;&nbsp; 
</span></font></b></font></span><font color="#FFFFFF"><b><font size="5"><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">/*</span><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">置空的国债队列</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">Q*/</span></font></b></font></p>
<p class="MsoNormal" style="text-indent: 0; mso-list: l24 level1 lfo24; tab-stops: list 18.0pt; margin: 0"><font size="5" color="#FFFFFF"><b><span style="font-style: normal; font-variant: normal; font-family: Times New Roman; mso-bidi-font-size: 10.0pt" lang="EN-US">&nbsp;&nbsp; 
</span><span lang="EN-US">if (!visited[v])<span style="mso-spacerun: yes">&nbsp; 
&nbsp;&nbsp;&nbsp;</span></span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">/*v</span><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">尚未访问</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">*/<o:p>
</o:p>
</span></b></font></p>
<p class="MsoNormal" style="text-indent: 0; mso-list: l24 level1 lfo24; tab-stops: list 18.0pt; margin: 0"><font size="5" color="#FFFFFF"><b><span style="font-style: normal; font-variant: normal; font-family: Times New Roman; mso-bidi-font-size: 10.0pt" lang="EN-US">&nbsp;&nbsp; 
</span><span lang="EN-US">{</span></b></font></p>
<p class="MsoNormal" style="text-indent: 0; mso-list: l24 level1 lfo24; tab-stops: list 18.0pt; margin: 0"><font size="5" color="#FFFFFF"><b><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
EnQucue(Q,v);<span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">/*v</span><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">入队列</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">*/<o:p>
</o:p>
</span></b></font></p>
<p class="MsoNormal" style="text-indent: 0; mso-list: l24 level1 lfo24; tab-stops: list 18.0pt; margin: 0"><font size="5" color="#FFFFFF"><b><span style="font-style: normal; font-variant: normal; font-family: Times New Roman" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</span><span lang="EN-US">while (!QueueEmpty(Q))</span></b></font></p>
<p class="MsoNormal" style="text-indent: 0; mso-list: l24 level1 lfo24; tab-stops: list 18.0pt; margin: 0"><font size="5" color="#FFFFFF"><b><span style="font-style: normal; font-variant: normal; font-family: Times New Roman; mso-bidi-font-size: 10.0pt" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</span><span lang="EN-US">{ </span></b></font></p>
<p class="MsoNormal" style="text-indent: 0; mso-list: l24 level1 lfo24; tab-stops: list 18.0pt; margin: 0"><font size="5" color="#FFFFFF"><b><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
DeQueue(Q,u); <span style="mso-spacerun:
yes">&nbsp;</span><span style="mso-spacerun: yes">&nbsp;</span></span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">/*</span><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">队头元素出队并置为</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">u*/<o:p>
</o:p>
</span></b></font></p>
<p class="MsoNormal" style="text-indent: 0; mso-list: l24 level1 lfo24; tab-stops: list 18.0pt; margin: 0"><font size="5" color="#FFFFFF"><b><span style="font-style: normal; font-variant: normal; font-family: Times New Roman" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</span><span lang="EN-US">visited[u]=TRUE; visit(u); <span style="mso-spacerun:
yes">&nbsp;&nbsp;</span>/</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">*</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;
mso-hansi-font-family:&quot;Times New Roman&quot;">访问</span><span lang="EN-US">u</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt">*/</span></b></font></p>
<p class="MsoNormal" style="text-indent: 0; mso-list: l24 level1 lfo24; tab-stops: list 18.0pt; margin: 0"><font size="5" color="#FFFFFF"><b><span style="font-style: normal; font-variant: normal; font-family: Times New Roman" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</span><span lang="EN-US">for(w=FistAdjVex(G,u); w; w=NextAdjVex(G,u,w))</span></b></font></p>
<p class="MsoNormal" style="text-indent: 0; mso-list: l24 level1 lfo24; tab-stops: list 18.0pt; margin: 0"><b><font size="5" color="#FFFFFF"><span style="font-style: normal; font-variant: normal; font-family: Times New Roman" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</span><span lang="EN-US">if (!visited[w]) EnQueue(Q,w);</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"> 
<span style="mso-spacerun:
yes">&nbsp;&nbsp;</span></span></font></b></p>
<p class="MsoNormal" style="text-indent: 0; mso-list: l24 level1 lfo24; tab-stops: list 18.0pt; margin: 0"><font size="5" color="#FFFFFF"><b><span style="font-style: normal; font-variant: normal; font-family: Times New Roman" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</span><span lang="EN-US">}</span></b></font></p>
<p class="MsoNormal" style="text-indent: 0; mso-list: l24 level1 lfo24; tab-stops: list 18.0pt; margin: 0"><font size="5" color="#FFFFFF"><b><span style="font-style: normal; font-variant: normal; font-family: Times New Roman" lang="EN-US">&nbsp;</span><span lang="EN-US"><span style="mso-spacerun:
yes">&nbsp;&nbsp;</span>}</span></b></font></p>
<p class="MsoNormal" style="text-indent: 0; mso-list: l24 level1 lfo24; tab-stops: list 18.0pt; margin: 0"><font size="5" color="#FFFFFF"><b><span lang="EN-US">}/*BFSTraverse*/</span></b></font></p>
<p class="MsoNormal" style="text-indent: 0; mso-list: l24 level1 lfo24; tab-stops: list 18.0pt; margin: 0"><span lang="EN-US"><font size="5" color="#FFFFFF"><b>&nbsp;<o:p>
</o:p>
</b></font></span></p>
<font size="5" color="#FFFFFF"><b><span style="mso-spacerun: yes; mso-bidi-font-size: 10.0pt; font-family: Times New Roman; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA" lang="EN-US">&nbsp;&nbsp;&nbsp; 
</span><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">分析上述算法,每个顶点至多进一次队列。遍历图的过程实质是通过边或弧找邻接点的过程,因此广度优先搜索遍历图的时间复杂度和深度优先搜索遍历相同,两者不同之处仅仅在于对顶点访问的顺序不同。</span></b></font>
<p> </p>
<p align="center"><b><a href="ds7.3.htm"><font size="5" color="#FFFF00">返回</font></a></b></p>
<p align="center"> </p>

</body>

</html>

⌨️ 快捷键说明

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