求助!!!关于一道C++的编程题!!!

2024年11月20日 08:25
有1个网友回答
网友(1):

//太多了.写不完啊.
#ifndef __COLLECTION
#define __COLLECTION
template class TCollection
{
int MaxLength; //集合的最大长度。
int Length; //集合长度
DataType *Element; //集合数组
public:
int Len(){return Length;};
TCollection(int Max=256); //无参数的构造函数
~TCollection(); //析构函数
bool Contain(DataType); //判别集合是否包含某个元素
void operator<<(DataType); //重载"<<"
void operator>>(DataType); //重载">>"
DataType operator[](int); //重载[]
int Location(DataType); //查找元素在集合中的位置
int Error; //错误代码
void RemoveElement(int); //删除指定序号的元素。
};
//=====================================================================
//无参数的构造函数
template TCollection ::TCollection(int Max)
{
MaxLength=Max;
Element=new DataType[Max];
Length=0;
Error=0;
}
//--------------------------------------------------------------------
//---------------------------------------------------------------------
template TCollection ::~TCollection()
{
delete []Element;
}
//---------------------------------------------------------------------
//判别集合是否包含某个元素
template bool TCollection ::Contain(DataType t)
{
return (Location(t)==-1)?false:true;
}
//----------------------------------------------------------------------
//查找元素在集合中的位置
template int TCollection ::Location(DataType t)
{
for(int i=0;i if(Element[i]==t)
return i;
return -1;
}
//---------------------------------------------------------------------
//用[]返回指定下标的元素
template DataType TCollection ::operator[](int index)
{
if(index=0)return Element[index];
else Error|=1; //设置错误代码:边界溢出=1
return Element[0];
}
//---------------------------------------------------------------------
//用<<向集合写入值
template void TCollection ::operator<<(DataType ele1)
{
if((!Contain(ele1))&&Length Element[Length++]=ele1;
}
//---------------------------------------------------------------------
template void TCollection ::RemoveElement(int index)
{
if(index>=Length||index<0)return;
int i;
for(i=index;i Element[i]=Element[i+1];
Length--;
}
//---------------------------------------------------------------------
//用>>从集合移去值
template void TCollection ::operator>>(DataType ele1)
{
int i=Location(ele1);
if(i>=0)
RemoveElement(i);
}
//---------------------------------------------------------------------
#endif

//下面是使用示例
#include
#include
#include
#include "collection.cpp"

//---------------------------------------------------------------------------
void main()
{
TCollection poker(52);
int i;
for(i=0;i<52;i++)//把0~51加入集合中
poker< for(i=0;i<52;i+=2)//移除集合中的偶数
poker>>i;
for(i=0;i cout<";//用[]输出指定下标的元素
cout<}