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

📄 text4-22.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">第四章</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"><a href="../text7/text7-0.htm">第七章</a></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>

<font color="#0033CC">Program:</font>  <font color="#FF0000">find equivalence classes </font>   O(m+ n)

  <font color="#FF0000">m</font> ~  the number of related pairs input
  <font color="#FF0000">n</font>  ~  the  number of objects

#include <stdio.h>
#include <alloc.h>
#define MAX_SIZE  24
#define IS_FULL(ptr)  (!(ptr))
#define  FALSE 0
#define  TRUE  1

typedef struct node *node_opinter;
typedef sreuct node {
    int data;
    node_pointer link;
    };
void <font color="#FF0033">main</font>(void)
{	short int out[MAX_SIZE];
    node_pointer seq[MAX_SIZE];
    node_pointer x,y,top;
    int i,j,n;
    printf("Enter the size (<= %d) ",MAX_SIZE);
    scanf("%d",&n);
    for ( i = 0; i&lt;n; i++ ) {<i><font size="3" color="#FF0099">	/* initialize seq and out */</font></i>
        out[i] = TRUE; seq[i] = NULL;
    }
<i><font size="3" color="#FF0099">/* Phase 1: Input the equivalence pairs: */</font></i>
    printf("Enter a pair of numbers ( -1 -1 to quit) : ");
    scanf("%d%d",&i,&j);
    while ( i&gt;=0 ) {
        x = (node_pointer)malloc(sizeof(node));
        if ( IS_FULL(x) ) {
            fprintf(stderr,"The memory is full\n");
            exit(1);
        }
        x->data = j; x->link = seq[i]; seq[i] = x;
        x = (node_pointer)malloc(sizeof(node));
        if  ( IS_FULL(x) ) {
            printf(stderr, "The memory is full\n");
            exit(1);
        }
        x->data = i; x->link = seq[j]; seq[j] = x;
        printf("Enter a pair of number (-1 -1 to quit): ");
        scanf("%d%d",&i,&j);
	}</b></font></pre>
<table width="728" cellspacing="0" hspace="15">
  <tr> 
    <td width="534"> 
      <pre><font face="Arial, Helvetica, sans-serif" size="4" color="#000000"><b><i><font size="3" color="#FF0099">/* Phase 2: output the equivalence classes */</font></i>
for ( i = 0; i&lt;n; ++i )
        if ( out [i] ) {
            printf("\nNew class: %5d",i);
            out[i] = FALSE;		<i><font size="3" color="#FF0099">/* set class to false</font></i>
            x = seq[i]; top = NULL;	<i><font size="3" color="#FF0099">/* initialize stack */</font></i>
            for ( ; ; ) {			<i><font size="3" color="#FF0099">/* find rest of class */</font></i>
                while ( x ) {	           <i><font size="3" color="#FF0099">  /* process list */</font></i>
                    j = x-&gt;data;
                    if ( out[j] ) {
                        printf("%5d",j); out[j] = FALSE;
                    y = x->link; x->link = top; top = x; x = y;
                    }
                    else x = x->link;
                }
                if ( !top ) break;</b></font></pre>
    </td>
    <td width="158"> 
      <pre><img src="IMAGE/CH4-19.gif" width="156" height="199"></pre>
    </td>
  </tr>
</table>
<pre align="left"><font face="Arial, Helvetica, sans-serif" size="4" color="#000000"><b>                     <i><font size="3" color="#FF0099"> /* unstack */</font></i>
                x = seq[top->data]; top = top->link;	
            }
       }
}</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="text4-index.htm"></map></a></td>
    <td width="131"><font face="楷体_GB2312" size="2"><b><a href="text4-21.htm">上一页</a> 
      <a href="text4-23.htm">下一页</a> </b></font></td>
  </tr>
</table>
<pre align="left">&nbsp;
</pre>
</body>
</html>

⌨️ 快捷键说明

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