设计一个整数集合类,具有置空、添加元素、判断元素是否在集合中、求交集、输出显示集合元素等功能。

用c++来实现上述功能... 用c++来实现上述功能 展开
 我来答
4431039龙
2011-05-12
知道答主
回答量:9
采纳率:0%
帮助的人:2.9万
展开全部
//第一段代码#include <stdio.h>#include <malloc.h>struct Number{ int m_value; Number *pNext;};class NumberSet{private: int m_count; struct Number *m_head; struct Number *m_end;public: NumberSet() { m_count = 0; m_head=NULL; m_end=NULL; } void Append(int pValue) //把一个整型数值插入到集合末尾. { m_count++; if(m_head==NULL) { m_head = (Number *)malloc(sizeof(Number)); m_head->m_value = pValue; m_head->pNext = NULL; m_end = m_head; } else { m_end->pNext = (Number *)malloc(sizeof(Number)); m_end->pNext->m_value = pValue; m_end->pNext->pNext = NULL; } } void clear() //清空集合 { for(m_end=m_head;m_end!=NULL;m_end = m_head->pNext) { m_head = m_end->pNext; free(m_end); } m_count=0; } ~NumberSet() { clear(); } int getNumber(int index) //获取集合中的数值.index为数值元素索引 { if(index<0 || index>m_count-1) return 0; for(m_end=m_head;m_end!=NULL;m_end=m_end->pNext) { if(index==0) { return m_end->m_value; } else { index--; } } } bool replaceNumber(int value,int index) //用一个新数值替换旧数值 { if(index<0 || index>m_count-1) return false; for(m_end=m_head;m_end!=NULL;m_end=m_end->pNext) { if(index==0) { m_end->m_value=value; return true; } else { index--; } } return false; } bool IsExisting(int pValue) //判断一个数值是否存在 { for(m_end=m_head;m_end!=NULL;m_end=m_end->pNext) { if(pValue == m_end->m_value) { return true; } } return false; } int getCount() //获取集合中数值元数的个数 { return m_count; }
回答人的补充 2009-05-07 00:02
//第二段代码 NumberSet * getIntersection(NumberSet *descNS) //求两个集合的交集 { NumberSet * pNumberSet = NULL; if(descNS == NULL) return NULL; else if(this == descNS) { return this; } else { pNumberSet = new NumberSet(); int index=0; for(m_end=m_head;m_end!=NULL;m_end=m_end->pNext) { index = descNS->getCount(); while(index>0) { index--; if(m_end->m_value==descNS->getNumber(index) && !pNumberSet->IsExisting(m_end->m_value) ) { pNumberSet->Append(m_end->m_value); } } } } return pNumberSet; } void Display() //打印集合元素数值 { printf("count:%d\nnumbers:",m_count); for(m_end=m_head;m_end!=NULL;m_end=m_end->pNext) { printf("%d ",m_end->m_value); } }};void main(){ NumberSet objNS; objNS.Append(1); objNS.Append(2); objNS.Append(3); NumberSet objNS2; objNS2.Append(3); objNS2.Append(4); objNS.getIntersection(&objNS2)->Display();//打印交集}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式