📄 linklib.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 + -