#include
class link//接点的定义=================--------------------=====================
{
public:
//插入元素-------------------------------
link* insert(int val);
private:
//构造函数------------------
link(int linkValue,link *nextPtr);
link(const link& source);
link* duplicate()const;
//数据域------------------------------------
int value;
link* ptrToNextLink;
friend class list;
};
link::link(int val,link* next):value(val),ptrToNextLink(next)
{
}
link::link(const link &source):value(source.value),ptrToNextLink(source.ptrToNextLink)
{
}
link* link::insert(int val)
{
ptrToNextLink=new link(val,ptrToNextLink);
return ptrToNextLink;
}
link* link::duplicate()const
{
link* newlink;
if(ptrToNextLink!=0)
newlink=new link(value,ptrToNextLink->duplicate());
else
newlink=new link(value,0);
return newlink;
}
// //==================================================================================
///
//
//
//
//
//
//
//
//
//=================================================================================
class list//表类的声明---+++++++++++++---------++++++++-----------------=++++++++++++++++
{
public:
//构造函数--------
list();
list(const list& source);
~list();//析够函数--------------------
//
void add(int value);//加入元素----------
void deleteAllValue();//删除全部元素-----------------
int firstElement()const;//返回第一个元素-----------
int includes(int value)const;//包含测试----------------
int isEmpty()const;//判断表是否为空----------------------=
void removeFirst();//移动第二个元素为第一个元素--------
list* duplicate()const;//复制---------=========
protected:
link* ptrToFirstLink;//数据域--------------------
};
list::list():ptrToFirstLink()
{
}
int list::isEmpty()const
{
return ptrToFirstLink==0;
}
void list::add(int val)
{
ptrToFirstLink=new link(val,ptrToFirstLink);
}
int list::firstElement()const
{
if(ptrToFirstLink!=0)
return ptrToFirstLink->value;
}
void list::removeFirst()
{
if(ptrToFirstLink!=0)
link *p=ptrToFirstLink;
ptrToFirstLink=p->ptrToNextLink;
delete p;
}
int list::includes(int val)const
{
for(link *p=ptrToFirstLink;p;p=p->ptrToNextLink)
if(val==p->value)
return 1;
return 0;
}
void list::deleteAllValue()
{
link* next;
for(link *p=ptrToFirstLink;p!=0;p=next)
{
next=p->ptrToNextLink;
p->ptrToNextLink=0;
delete p;
}
ptrToFirstLink=0;
}
list* list::duplicate()const
{
list *newlist=new list;
if(ptrToFirstLink)
newlist->ptrToFirstLink=ptrToFirstLink->duplicate();
return newlist;
}
list::list(const list &source)
{
if(source.isEmpty())
ptrToFirstLink=0;
else
{
link* firstLink=source.ptrToFirstLink;
ptrToFirstLink=firstLink->duplicate();
}
}
list::~list()
{
deleteAllValue();
}
//==========================================================以上是类的定义====================
--------------------next---------------------
阅读(1012) | 评论(0) | 转发(0) |