欢迎来到天天文库
浏览记录
ID:35227049
大小:141.09 KB
页数:11页
时间:2019-03-22
《数据结构实验报告(模板类)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、数据结构实验报告——模板类实现链表10目录1.实验内容……………………………………………………………………PAGE.22.实验目的……………………………………………………………………PAGE.23预备知识……………………………………………………………………PAGE.24.技术难点……………………………………………………………………PAGE.25.设计思路……………………………………………………………………PAGE.36.成员函数实现举例…………………………………………………………PAGE.47.测试代码……………………………………………………………………PAGE.78.心得体会……………
2、………………………………………………………PAGE.10101.实验内容Ø定义一个包含模板的结构。Ø定义一个链表类,能够增加元素、删除元素、查找元素、打印链表。Ø编写测试代码,验证链表类编写是否正确2.实验目的Ø理解指针的定义Ø理解类的结构Ø学习使用类模板3.预备知识Ø内存:计算机存储硬件。为了区别内存的不同位置,内存被分成字节,内存的全部字节顺序地赋予一个称为地址的编号。因此,内存地址是物理的,计算机设计好就给定了。Ø变量:在内存中占据一定的内存字节,在这些字节中存储的数据信息称为变量的内容。因此,通过变量就可以操作内存,也就是说要操作某块内存,就必须先将这块内存的首地址和一个变量名绑
3、定起来。换句话说,当我们声明一个变量后,就意味着我们申请使用一块特定大小的内存,用于存储我们的数据。Ø指针变量:在变量中,有一类变量比较特殊,其形式为int*ptr。其特殊性是指该变量不是直接存储数据,而是存储内存地址。因此,通过该变量,我们可以得到另外一个内存空间所存储的信息。Ø数组:由于变量所申请的内存空间是非常有限的,很多情况下,我们需要更大的空间,例如存储字符串”C++isdifficultbutinteresting”。如果采用一系列char变量,则需要数10个变量。这种情况显然不是我们所希望看到的。这时候,我们就可以采用数组非常方便地完成字符组的存储:charstr[]=”C
4、++isdifficultbutinteresting”。Ø动态分配:数组虽然可以申请更大的内存空间,但是其存在一个基本缺点是需要事先指定内存大小。但是,在很多情况下,我们无法知道需要分配内存的大小。例如,我们需要设计一个读取图像的程序。但是,不同图像的宽带和高度显然是不一样的,因此,需要的内存大小也不一样。因此,我们需要根据图像宽带和高度动态分配内存大小。在这种情况下,数组是无能为力的。而在C++中,采用new操作符来完成动态内存分配。4.技术难点ØC++如何管理内存Ø内存和指针的关系105.设计思路对于链表的设计,基本可以参照学生信息管理的结构体与类的构建,这里就不一一叙述,直接上代
5、码。templatestructListElement{TListElem;ListElement*NextDataAddress;};templateclassList{private:ListElement*m_ElemList;ListElement*frist;public:List();~List();public:List&operator=(List&rhs);//运算符重载ListElement*FindElem(constT&target);voidAddElem(T&NewElem);voidDele
6、teElem(Tvalue);ListElement*GetListPtr(){returnfrist;};//得到链表的首地址voiddisplay();voidLinkList(List&list_1);//连接两个链表voidSortList();//对链表进行排序voidChange(ListElementElem_1,ListElementElem_2);//交换链表中的两个元素};10成员函数实现举例对于模板类的成员函数实现,voidAddElem(T&NewElem),voidDeleteElem(Tvalue),voiddisplay(),List
7、Element*FindElem(constT&target)这四个函数与之前的学生信息管理系统的函数没有太大的区别,算法也基本一致,这里就不在过多叙述。接下来重点说一下List&operator=(List&rhs)的设计思路。在List&operator=(List&rhs)函数中,定义了指向结构的指针p与newnode。P指针用于对原链表的备份。而newnode则是不断申请新的内存空间,用于存放传递过来的原链
此文档下载收益归作者所有