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

📄 linklib.h

📁 用C++开发的编译程序
💻 H
字号:

#if !defined(_LINKLIB_H_)
#define _LINKLIB_H_


class Link
{
public:
	void* Data;
	int Size;
	Link* Next;
	Link(void* newData=NULL,int dSize=0,Link* lNext=NULL)
	{
		Data=newData;
		Size=dSize;
		Next=lNext;
	}
};

class LinkMan
{

public:

	Link* Head;
	Link* Tail; 
	int Count;

	LinkMan()
	{
		Clear();
	}

	~LinkMan()
	{
		Clear();
	}

	void Add(Link* lnk)
	{
		if(!Tail)
			Head->Next=lnk;
		else
			Tail->Next=lnk;
		Tail=lnk;
		Count++;
	}

	void Add(void* Data,int Size)
	{
		Link* lnk = new Link(Data,Size);
		Add(lnk);
	}

	Link* Remove(int Index)
	{
		int i=-1;
		Link* tmp=Head;
		while(tmp->Next)
		{
			if(++i==Index)
			{
				Link* lnk=tmp->Next;
				tmp->Next=lnk->Next;
				Count--;
				return lnk;
			}
			tmp=tmp->Next;
		}
		return NULL;
	}
	
	Link* Remove(Link* lnk)
	{
		Link* tmp=Head;
		while(tmp->Next)
		{
			int size;
			if(lnk->Size>tmp->Next->Size)
				size=lnk->Size;
			else
				size=tmp->Next->Size;
			if(memcmp(tmp->Next->Data,lnk->Data,size)==0)
			{
				Link* l=tmp->Next;
				tmp->Next=l->Next;
				Count--;
				return l;
			}
			tmp=tmp->Next;
		}
		return NULL;
	}

	Link* Remove(void* Data,int Size)
	{
		Link* lnk=new Link(Data,Size);
		Link* result=Remove(lnk);
		delete lnk;
		return result;
	}

	int Find(Link* lnk)
	{
		int i=-1;
		Link* tmp=Head;
		while(tmp->Next)
		{
			i++;
			int sz;
			if(lnk->Size>tmp->Next->Size)
				sz=lnk->Size;
			else
				sz=tmp->Next->Size;
			if(memcmp(tmp->Next->Data,lnk->Data,sz)==0)
				return i;
			tmp=tmp->Next;
		}
		return -1;
	}

	int Find(void* Data,int Size)
	{
		Link* lnk=new Link(Data,Size);
		int result=Find(lnk);
		delete lnk;
		return result;
	}

	Link* GetAt(int Index)
	{
		int i=-1;
		Link* tmp=Head;
		while(tmp->Next)
		{
			if(++i==Index)
				return tmp->Next;
			tmp=tmp->Next;
		}
		return NULL;
	}

	Link* Clear()
	{
		Link* tmp=Head;
		Count=0;
		Tail=NULL;
		Head=new Link;
		return tmp;
	}

};

#endif

⌨️ 快捷键说明

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