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

📄 9.4.2_2.htm

📁 建立《编译原理网络课程》的目的不仅使学生掌握构造编译程序的原理和技术
💻 HTM
字号:
<html>

<head>
<title>编译原理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link type="text/css" rel="stylesheet" href="../css/specification.css">
</head>

<BODY>

<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='9.4.2.htm'" ></td>
<td>
<img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='9.4.4.htm'" ></img></td>
</tr>
</table>
<br><br>

<font class="title2"><b>9.4.2 自然循环(续)</b></font>            


<table>
<tr>
<td>&nbsp&nbsp&nbsp&nbsp</td>
<td class="content">
<p>
下面给出构造自然循环的算法。
</p>
<p>
<font class = "definition">算法9.2  构造回边的自然循环</font> 
</p>
<p>
输入:流图G和回边n→d
</p>
<p>
输出:由回边n→d确定的自然循环中所有结点构成的集合loop
</p>
<p>
方法:由结点n开始,考虑已置入loop的每个结点m ≠d,以保证m的前驱也能置入循环。loop中的每个结点,除了d以外,一旦加入stack,它的前驱就要被检查。注意,因为d是初始时置入循环,决不会考察它的前驱,因此仅找出那些不经过d可以到达n的结点。
</p>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp            <font color="#0000FF">procedure</font> insert(m): <br>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp            <font color="#0000FF">if</font> m不属于loop 
<font color="#0000FF">then</font> <font color="#0000FF">begin</font> <br>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp                loop := loop ∪ {m}; <br>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp                push(m)<br>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp            <font color="#0000FF">end</font>; <br>
&nbsp&nbsp&nbsp&nbsp&nbsp<font color="#008000">&nbsp&nbsp&nbsp /* 下面是主程序 */
</font> <br>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp            stack := empty; <br>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp            loop&nbsp; := {d}; <br>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp            insert(n); <br>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp            <font color="#0000FF">while</font> stack 非空  
<font color="#0000FF">do</font> <font color="#0000FF">begin</font> <br>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp        托出 stack 顶结点 m; <br>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp                
<font color="#0000FF">for</font> m的每个前驱P <font color="#0000FF">do</font> insert(P) <br>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp            <font color="#0000FF">end</font> <br>
<center><b>图9.19&nbsp&nbsp 构造自然循环的算法</b></center>
<p>
我们可以通过(看演示)来帮助学习算法
</p>

</td>
</tr>
</table>

<p>
<table>
<tr>
<td><font class="yanshi">&nbsp &nbsp &nbsp &nbsp观看演示&nbsp</font></td>
<td><font color=blue onmouseover="javascript:style.cursor='hand'" onclick="javascript:open('applet/9421/Page1.htm','_blank','menu=no,toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizable=yes,copyhistory=no,left=100,top=100,width=800,height=600')">构造回边的自然循环</font></td>
<td><img src="../images/yanshi.gif"></img></td>
</tr>
</table>
</p>


</p>

<table align=right width=300>
<tr>
<td>
<img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='9.4.2.htm'" ></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='9.4.4.htm'" ></td>
</tr>
</table>

</BODY>

⌨️ 快捷键说明

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