c语言实验九函数 2,C语言程序设计基础实验九 多态性虚函数.doc

C语言程序设计基础实验九 多态性虚函数

实验九 多态性与虚函数

实验目的要求

掌握虚函数定义及实现。

掌握具有多态性的面向对象程序设计的基本方法。

掌握纯虚函数与抽象类的定义、实现及应用。

2.实验设备

电脑一台,Microsoft Visual C++ 6.0

实验内容

有一个整数链表,现从此链表派生出一个整数集合类,在集合类中增加一个元素个数的数据项。集合类的插入操作与链表相似,只是不插入重复元素,并且插入后,元素个数的数据成员需增加。集合类的删除操作是在链表删除操作的基础上对元素个数做减1操作。而查找和输出操作是相同的,因此在集合类中不需要重复定义。

#include

#include

// enum bool {false,true};

struct element { //定义链表中的结点结构

int val;

element *next;

};

class list { //定义链表类

element *elems;

public:

list() {elems=0;}

~list();

virtual bool insert(int); //此虚函数在派生类中可重新定义

virtual bool deletes(int); //此虚函数在派生类中可重新定义

bool contain(int);

void print();

};

class set:public list { //将集合类set定义为链表类list的派生类

int card;

public:

set() {card=0; }

bool insert(int); //重定义此函数

bool deletes(int); //重定义此函数

};

list::~list() //list类得析构函数定义,循环释放各元素所占的存储

{

element *tmp=elems;

for(element *elem=elems; elem!=0;)

{

tmp=elem;

elem=elem->next;

delete tmp;

}

}

bool list::insert(int val) //定义list类中插入元素的成员函数

{

element *elem=new element; //为新元素分配存储

if (elem!=0) {

elem->val=val; //将新元素插入到链表头

elem->next=elems;

elems=elem;

return true;

}

else return false;

}

bool list::deletes(int val) //定义list类中删除元素的成员函数

{

if(elems==0) return false; //若表为空,返回false

element *tmp=elems;

if(elems->val==val)

{ //若待删除的元素为表头元素

elems=elems->next;

delete tmp;

return true;

}

else

for(element *elem=elems; elem->next!=0; elem=elem->next)

if(elem->next->val==val)

{ //循环查找待删除元素

tmp=elem->next;

elem->next=tmp->next;

delete tmp;

return true;

}

return false;

}

bool list::contain(int val)

{ //判元素val在链表中是否存在

if(elems==0)return false;

if(elems->val==val) return true;

else

for(element *elem=elems; elem->

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值