算法不会,尚能饭否之集合(Set)
哎,这个年过的让我有点懒了。你懂得!程序员是不能懒的,所以还是逼着自己把这个集合的相关操作的程序写出来吧。我一直都告诉自己,程序不是想出来,是写出来的,程序不是在你的大脑里运行的,程序是在你的电脑上运行的,是吧,伙计!
如果,我想要一直的再懒下去,恐怕,链表我都不会实现了。呵呵!程序员需要的就是那种手摸键盘的感觉,你要是手不摸键盘就痒痒的,那你就该把手放到键盘上去磨磨了,至少,看完这个我写的程序你心里也该痒痒了。我知道你,你肯定实现的比我好!是吧,朋友!因为,我很菜!我都能实现,更何况你呢?
那我就在这里献丑了,讲讲我实现的集合操作吧。如何实现,用力那些技巧?我会一一说出来的。来吧,伙计,走进集合操作的世界吧,这里很精彩。你会喜欢这里的,如果你喜欢,那就把我的博客加为RSS吧!希望你和我一起交流,你可以发帖给我提出你的问题,你也可以加我QQ:535064959和我私聊。来吧!
我的实现总的说起来是很简单的,也是很方便的。下面是集合类:
我是用链表实现集合元素的存储的。为什么不采用数组,原因有很多,但主要是我不喜欢数组。应该你也和我一样吧。哈哈!
//集合的操作类
class SetList
{
public:
SetList();
~SetList();
void AddMember(const int &); //集合中添加新元素
void DelMember(const int &); //删除集合中的元素
int Contains(const int &); //判断元素是否在集合中
int Min(); //求集合中的最小值
int Max(); //求集合中的最大值
void Union(SetList, SetList); //求集合的并集
void Intersection(SetList, SetList); //求集合的交集
void Difference(SetList, SetList); //求集合的差集
int IsEmpty(); //求集合是否为空
void MakeEmpty(); //将集合置空
int SubSet(SetList, SetList); //判断某一集合是否为另一个集合的子集
private:
Node *first; //定义一个指向头节点的指针
Node *current; //当前指针的位置
};
看看需要实现的功能,是很简单的吧!
由于代码很长,现在我把下载地址贴出!