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

📄 text7-46.htm

📁 浙江大学计算机学院数据结构课程的教学课件
💻 HTM
字号:
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#FFFFFF" link="#0000FF" vlink="#3399FF" alink="#FF0066">
<div id="Layer1" style="position:absolute; width:711px; height:21px; z-index:1; top: 10px; background-color: #CCCCCC; layer-background-color: #CCCCCC; border: 1px none #000000; left: 26px"><b>|</b><font face="宋体" size="2"><a href="../text1/text1-0.htm">第一章</a></font><b>|</b><font face="宋体" size="2"><a href="../text2/text2-0.htm">第二章</a></font><b>|</b><font face="宋体" size="2"><a href="../text3/text3-0.htm">第三章</a></font><b>|</b><font face="宋体" size="2"><a href="../text4/text4-0.htm">第四章</a></font><b>|</b><font face="宋体" size="2"><a href="../text5/text5-0.htm">第五章</a></font><b>|</b><font face="宋体" size="2"><a href="../text6/text6-0.htm">第六章</a></font><b>|</b><font face="宋体" size="2">第七章</font><b>|</b><font face="宋体" size="2"><a href="../text8/text8-0.htm">第八章</a></font><b>|</b><font face="宋体" size="2"><a href="../text9/text9-0.htm">第九章</a></font><b>|</b><font face="宋体" size="2"><a href="../text10/text10-0.htm">第十章</a></font><b>|</b><font size="2" face="宋体"><a href="../textA/textA-0.htm">算法分析</a><b><font color="#000000">|</font></b> 
  </font></div>
<pre align="left"><font face="Arial, Helvetica, sans-serif" size="4" color="#000000"><b>
void <font color="#FF0000">run_generation</font>(char *in_name,  char *out_name)
{<i><font size="3" color="#CC0099">/* generate runs using a loser tree */</font></i>
        int winner  =  0,  winner_run  =  0,  current_run  =  0;  
        int max_runs  =  0,  last_key  =  INT_MAX;  
        int i,  parent,  loser,  temp;  
        FILE *in,  *out;  
        in  =  open_input(in_name);  
        out  =  fopen(out_name,  "wb");  
        for (i  =  1;  i  <  k;  i++){
      <i><font size="3" color="#CC0099">  /* set up tree with  dummy nodes */</font></i>
                tree[i].data.key  =  0;  
                tree[i].data.run  =  0;  
                tree[i].loser  =  i;  
        }       
        tree[winner].data.run  =  0;  
        for ( ;  ;  ){
            if (winner_run !=  current_run){
               if (winner_run > max_runs){
             <i><font size="3" color="#CC0099">  /* last record reached ,  close files and return */</font></i>
                  fclose(in);  fclose(out);  
                  return;  
               }  
               current_run  =  winner_run;  
            }  
            if (winner_run){
         <i><font size="3" color="#CC0099">   /* suppress output if dummy records */</font></i>
               fwrite(&tree[winner].data,  sizeof(element),  1,  out);  
               last_key  =  tree[winner].data.key;  
            }  
            fread(&tree[winner].data,  sizeof(element),  1,  in);  
            if (feof(in)){               <i><font size="3" color="#CC0099">   /* signal to end processing */</font></i>
               winner_run  =  max_runs+1;  
               tree[winner].data.run  =  winner_run;  
           }
           else {
               if (tree[winner].data.key  <  last_key){
                    winner_run++;  
                    tree[winner].data.run  =  winner_run;  
                    max_runs  =  winner_run;  
              }
              else 
                    tree[winner].data.run  =  current_run;  
          }
      <i><font size="3" color="#CC0099">    /* adjust tree */</font></i>
          parent  =  (k + winner)/2;  
          while(parent){
              loser  =  tree[parent].loser;  
              if (tree[loser].data.run  <  winner_run ||
              (tree[loser].data.run  ==  winner_run  &&
               tree[loser].data.key  <  tree[winner].data.key)){
                temp  =  winner;  
                winner  =  tree[parent].loser;  
                tree[parent].loser =  temp;  
                winner_run  =  tree[winner].data.run;  
              } 
              parent/  =  2;  
           }
     }
}

FILE<font color="#FF0000"> *open_input</font>(char *source_name)
{
        FILE  *source;  
        source  =  fopen(source_name,  "rb");  
        if (!source){
          fprintf(stderr,  "File %s cannot be opened for input\n", 
                      source_name);  
          exit(1);  
        }
        return source;  
}

</b></font></pre>
<table width="731" cellspacing="0" cellpadding="0">
  <tr> 
    <td width="327">&nbsp;</td>
    <td width="271"><a href="../index.htm"><img width="60" height="25" usemap="#MapMap4" border="0" src="../../images/home.gif"></a><a href="../index.htm"><map name="MapMap4"><area shape="rect" coords="42,-34,88,-15" href="text0.htm"><area shape="rect" coords="4,4,55,23" href="text7-index.htm"></map></a></td>
    <td width="131"><font face="楷体_GB2312" size="2"><b><a href="text7-45.htm">上一页</a> 
      <a href="text7-47.htm">下一页</a> </b></font></td>
  </tr>
</table>
</body>
</html>

⌨️ 快捷键说明

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