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

📄 set.h

📁 正则表达式由一些普通字符和一些元字符(metacharacters)组成。普通字符包括大小写的字母和数字
💻 H
字号:
#ifndef SET_H
#define SET_H

#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include "Link.h"

using namespace std;

template<typename _Type>
class Set
{
public:
	Link<_Type> Data;
	int Size;

	Set()
	{
		Size=0;
	}

	~Set()
	{
	}

	Node<_Type>* GetHead()
	{
		return Data.GetHead();
	}

	void Copy(Set<_Type>& Object)
	{
		Data.Copy(Object.Data);
		Size=Object.Size;
	}

	void Sub(Set<_Type>& Object)
	{
		Node<_Type>* Temp_Object=Object.GetHead();
		while (Temp_Object)
		{
			Node<_Type>* Temp=Data.GetHead();
			while (Temp)
			{
				if (Temp_Object->Data==Temp->Data)
				{
					Node<_Type>* TempDelete=Temp;
					Temp=Temp->Next;
					Data.Delete(TempDelete);
					--Size;
				}
				else Temp=Temp->Next;
			}
			Temp_Object=Temp_Object->Next;
		}
	}

	bool Add(const _Type& Object)
	{
		Node<_Type>* Temp=Data.GetHead();
		if (Temp)
		{
			while (Temp)
			{
				if (Object==Temp->Data)
					return false;
				Temp=Temp->Next;
			}
		}
		Data.AddLast()->Data=Object;
		++Size;
		return true;
	}

	void Add(const Set<_Type>& Object)
	{
		Node<_Type>* Temp=Object.Data.Head;
		while (Temp)
		{
			Add(Temp->Data);
			++Size;
			Temp=Temp->Next;
		}
	}

	void Delete(Node<_Type>* Object)
	{
		Data.Delete(Object);
		--Size;
	}

	Node<_Type>* Find(const _Type& Object)
	{
		return Data.Find(Object);
	}

	bool Exists(const _Type& Object)
	{
		return Data.Find(Object)!=0;
	}

	bool operator==(Set<_Type>& Object)const
	{
		if (Size==Object.Size)
		{
			Node<_Type>* Temp=Data.Head;
			while(Temp)
			{
				bool Judge=false;
				Node<_Type>* Temp_Object=Object.GetHead();
				while (Temp_Object)
				{
					if (Temp->Data==Temp_Object->Data)
					{
						Judge=true;
						break;
					}
					Temp_Object=Temp_Object->Next;
				}
				if (!Judge) return false;
				Temp=Temp->Next;
			}
			return true;
		}
		else return false;
	}

	void Zero()
	{
		Data.Zero();
	}

};

/*
template<typename _Type>
class Set
{
public:
	OrderedLink<_Type, false> Data;

	Set()
	{
	}

	~Set()
	{
	}

	Node<_Type>* GetHead()
	{
		return Data.GetHead();
	}

	void Copy(Set<_Type>& Object)
	{
		Data.Copy(Object.Data);
	}

	void Sub(Set<_Type>& Object)
	{
		Node<_Type>* Temp_Object=Object.GetHead();
		while (Temp_Object)
		{
			Node<_Type>* Temp=Data.GetHead();
			while (Temp)
			{
				if (Temp_Object->Data==Temp->Data)
				{
					Node<_Type>* TempDelete=Temp;
					Temp=Temp->Next;
					Data.Delete(TempDelete);
				}
				else Temp=Temp->Next;
			}
			Temp_Object=Temp_Object->Next;
		}
	}

	bool Add(const _Type& Object)
	{
		return Data.Add(Object);
	}

	void Add(const Set<_Type>& Object)
	{
		Node<_Type>* Temp=Object.Data.Head;
		while (Temp)
		{
			Data.Add(Temp->Data);
			Temp=Temp->Next;
		}
	}

	void Delete(Node<_Type>* Object)
	{
		Data.Delete(Object);
	}

	Node<_Type>* Find(const _Type& Object)
	{
		return Data.Find(Object);
	}

	bool Exists(const _Type& Object)
	{
		return Data.Exists(Object);
	}

	bool operator==(Set<_Type>& Object)const
	{
		return (Data==Object.Data);
	}

};
*/

#endif

⌨️ 快捷键说明

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