该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
首先我是新建了一个win32 Console Application的工程(空工程),然后是建立了
头文件SqList.h。
代码为:
#ifndef _SqList_H
#define _SqList_H
template
class SqList
{
protected:
int count;
int maxSize;
ElemType *elems;
public:
SqList(int size=DEFUALT_SIZE);
virtual~SqList();
int Length() const;
bool Empty() const;
void Clear();
void Traverse(void(*visit)(const ElemType &))const;
bool GetElem(int position,ElemType &e)const;
bool SetElem(int position,const ElemType &e);
bool Delete(int position,ElemType &e);
bool Insert(int position,const ElemType &e);
SqList(const SqList©);
SqList&operator=(const SqList©);
};
template
SqList::SqList(int size)
{
maxSize=size;
elems=new ElemType[maxSize];
count=0;
}
template
SqList::~SqList()
{
delete []elems;
}
template
int SqList::Length() const
{
return count;
}
template
bool SqList::Empty() const
{
return count==0;
}
template
void SqList::Clear()
{
count=0;
}
template
void SqList::Traverse(void(*visit)(const ElemType &))const
{
for(int pos=1;pos<=Length();pos++)
{
(*visit)(elems[pos-1]);
}
}
template
bool SqList::GetElem(int position,ElemType &e)const
{
if(position<1||position>Length())
{
return false;
}
else
{
e=elems[position-1];
return true;
}
}
template
bool SqList::SetElem(int position,const ElemType &e)
{
if(position<1||position>Length())
{
return false;
}
else
{
elems[position-1]=e;
return true;
}
}
template
bool SqList::Delete(int position,ElemType &e)
{
ElemType tmp;
if(position<1||position>Length())
{
return false;
}
else
{
GetElem(position,e);
for(int pos=position+1;pos<=Length();pos++)
{
GetElem(pos,tmp);
SetElem(pos-1,tmp);
}
count--;
return true;
}
}
template
bool SqList::Insert(int position,const ElemType &e)
{
ElemType tmp;
if(count==maxSize)
{
return false;
}
else if(position<1||position>Length())
{
return false;
}
else
{
count++;
for(int pos=Length();pos>=position;pos--)
{
GetElem(pos,tmp);
SetElem(pos+1,tmp);
}
SetElem(position,e);
return true;
}
}
template
SqList::SqList(const SqList©)
{
maxSize=copy.maxSize;
elems=new ElemType[maxSize];
count=copy.count;
for(int pos=1;pos<=Length();pos++)
{
elems[pos-1]=copy.elems[pos-1];
}
}
template
SqList&SqList::operator=(const SqList©)
{
if(©!=this)
{
maxSize=copy.maxSize;
if(elems!=NULL)
{
delete []elems;
}
elems=new ElemType[maxSize];
count=copy.count;
for(int pos=1;pos<=Length();pos++)
{
elems[pos-1]=copy.elems[pos-1];
}
}
return *this;
}
#endif