| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 421 人关注过本帖
标题:一道课后习题,请大家帮忙看下。
取消只看楼主 加入收藏
刮目相看
Rank: 2
等 级:论坛游民
帖 子:25
专家分:30
注 册:2009-11-23
结帖率:50%
收藏
 问题点数:0 回复次数:0 
一道课后习题,请大家帮忙看下。
这题是关于抽象数据类型的。要定义一个叫做集合类型。
相关操作,有创建,加入元素,求交集,求并集等。

我想要动态定义。我写的如下:

typedef struct{
        int *debut;/*起始位置*/
        int card;/*元素个数*/
        }ensemble;

void Creer(ensemble *e)/*创建一个空集合*/
{
     e->debut=NULL;
     e->card=0;
}

void ajout(ensemble *e,int x)/*向集合e中添加x这个元素*/
{
     if(e->card==0)/*如果e是空集合*/
     {
       e->debut=(int *)malloc(sizeof(int));
       *(e->debut)=x;
       e->card++;
     }
     else{
          e->debut=(int *)realloc(e->debut,e->card+1);
          *(e->debut+e->card)=x;
          e->card++;
          }
}     

int Union(ensemble e1,ensemble e2,ensemble *e3){    /*求2个集合的并集*/
         
         if(est_vide(e1))return 0;/*如果e1或者e2是空集*/
         if(est_vide(e2))return 0;
         
         int i;
         for(i=0;i<e1.card;i++){  /*向集合e3中依次添加e1的每个元素*/
         ajout(e3,*(e1.debut+i));
         printf("%d ",*(e1.debut+i));
         }
         
         for(i=0;i<e2.card;i++){   /*向集合e3中依次添加e2的每个元素*/
         ajout(e3,*(e2.debut+i));
         printf("%d ",*(e2.debut+i));
         }
         
         return 1;
}

我这里还没有检查是否有重复元素出现。
最后这个求并集的函数有问题,不知道哪里不对,想请教一下,谢谢。
         
     
  
搜索更多相关主题的帖子: 习题 
2010-03-11 06:07
快速回复:一道课后习题,请大家帮忙看下。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011776 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved