《数据结构与算法》实验四 1017.docx
《《数据结构与算法》实验四 1017.docx》由会员分享,可在线阅读,更多相关《《数据结构与算法》实验四 1017.docx(8页珍藏版)》请在冰豆网上搜索。
《数据结构与算法》实验四1017
《数据结构与算法》课程实验报告(四)
实验项目
编号
实验名称
实验四C++及单链表操作
实验课时
2
主要仪器设备
附属设备
主要使用软件
实验时间
2013-10-17
一、实验目的
通过本次实验,能够很好掌握C++类知识、类模板、单链表结构及主要成员函数等相关知识。
2、实验内容及要求
1、(必做题)用C++类知识定于一个Date类:
数据成员:
Year,Month,Day,
成员函数:
Date(intyear,intmonth,day);
//构造函数用于初始化数据成员
boolModify_Year(constintyear);//用于修改数据成员
boolModify_Month(constintmonth);//用于修改数据成员
voidDisplay_Date();//用于显示数据成员
boolIsLeap();//用于判断是否闰年
另外:
闰年:
整百年能被400整除的是闰年.(如:
2000)
除整百年外的年份能被4整除的是闰年.
《代码范例1:
》
ClassDate
{
Private:
IntYear;
IntMonth;
IntDay;
Public:
Date(intyear,intmonth,intday);
boolModify_Year(constintyear);
boolModify_Month(constintmonth);
voidDisplay_Date();
boolIsLeap();
};
BoolDate:
:
Date(intyear,intmonth,intday)
{
Year=year;Month=month;Day=day;
}
boolDate:
:
Modify_Year(constintyear)
{
Year=year;
}
boolDate:
:
Modify_Month(constintmonth)
{
Month=month;
}
boolDate:
:
IsLeap()
{
If(0==Year%400||0==Y%400)
{returntrue;}
Else
{returnfalse;}
}
VoidDate:
:
Display_Date()
{;}
Voidmain()
{
Datedate(2013,10,18);//定于一个Date类对象date
Date.Display_Date();//利用对象date调用函数
}
2、利用template知识构造一个通用的求最小值函数模板
(注意:
掌握好的同学试着构造一个通用的排序函数模板
(必做题)
VoidSort_Data(T[],intsize))
《代码范例1:
》
Template
T1MiN(T1a,T1b)
{
Returna>b?
b:
a;
}
Voidmain()
{
Cout<Cout<}
3、利用template知识构造一个简单的A类模板(必做题)
Template
ClassA
{
Public:
T1a;
T2b;
VoidSet(T1aa,T2bb);
{
a=aa;
b=bb;
}
VoidDisplay();
};
Template
VoidA:
:
Set(T1aa,T2bb)
{
a=aa;
b=bb;
}
VoidA:
:
Display()
{
Cout<}
Voidmain()
{
Aa1;
a1.Set(12,13.2);
Aa2;
}
4、用类模板、danlian表知识定义单链表类,并举例加以验证。
(注:
类中须要有增加、删除、)。
(***选做)
《代码范例:
》
(1)、先定义数据元素(结点)类:
用于结点元素中
data、next的封装。
D
例如:
Template
structNode
{
Elemdata;
Node*Next;
}
(3)、然后定义数据元素(结点)类:
用与形成链表及相关操作
部分代码:
Template
ClassLinkList
{
Protected:
Node*head;//数据成员
Public:
Node*GetElementPtr(intpos);
LinkList();
~LinkList();
BoolLength()const;
BoolDeleteElem(intpos,Elem&e);
BoolInsertElem(intpos,Elem&e);
};
5、用单链表知识定义多项式类,并举例加以验证(*****选做)。
3、实验预备知识
1、类模板
类模板:
是对一批仅仅类成员(数据成员或成员函数)的数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,从而大大提高编程的效率。
例1:
ClassT1
{intdata;
voidSet(intda)
{data=da;}
};
ClassT2
{doubledata;
voidSet(doubleda)
{data=da;}
};
2、类模板定义格式
定义类模板的一般形式:
template
class类名
{
类声明体;
};
类模板中成员函数定义格式:
template
函数返回值类型类名<类型名列表>:
:
函数名(参数列表)
{;}
3、模板类对象的定义
与函数模板相同,类模板只有使用的时候才被具体化为某一种类型
使用模板类来产生对象时,按如下形式声明:
类名<模板参数表>对象名1,......对象名n;
4、顺序表的知识参考课件
插入操作:
删除操作:
5、单链表的知识参考课件
删除操作:
插入操作:
四、实验存在问题和解决办法
五、意见和建议
六、教师评语(或成绩)
教师签字:
年月日