c语言sqlist头文件,自定义头文件打不开,求破...

这个博客介绍了如何在C++中创建一个顺序列表(SqList)的模板类,包括构造函数、析构函数以及增删改查等基本操作。代码展示了如何管理动态内存,并实现了拷贝构造函数和赋值运算符重载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

首先我是新建了一个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&copy);

SqList&operator=(const SqList&copy);

};

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&copy)

{

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&copy)

{

if(&copy!=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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值