基于模板技术的多层次可视化数据结构实验环境研究

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《数据结构》精品课程建设资料基于模板技术的多层次可视化数据结构实验环境研究可视化数据结构实验环境VCDSv1.0编程实验(C++版)(编号:20050202A)参考手册合肥工业大学《数据结构》课程组2005年7月15日《数据结构》精品课程资料汇编2第1章DSSTL类库1.1DSSTL类库概述数据结构基础类模板库。这是实验环境所用到的最重要也是最基础的类库,其中类名全部以大写字母D开始,在本文中将此类库简称为D类库。D类库全部以标准C++语言编写,适合于所有标准C++编译器且不依赖第三方类库。它定义了每种数据结构的最基本的物理实现部分,提供了数据结构最基本的逻辑操作,如堆栈的入栈和出栈,并采用了C++输入输出流机制对数据结构进行存储。在数据层的设计中体现了C++的虚继承与继承的特点,采用模板技术实现多种数据类型的代码封装,大大减少了代码的冗余,整个数据层的设计学习VC中的MFC类库的特点达到了结构明确,层次清晰,类与类之间的关系紧密。由于整个软件中的数据结构较多有八大模块,为了很好的实现类的层次架构,设计过程中设置了数据层基类DObject,然后依据具体模块设置相应的类层次,其结构框架见附录一。1.2DObjectDOject是数据结构标准摸班类库DSSTL中所有类的基类,定义了许多公用的虚函数。这些虚函数有相当一部分是纯虚函数,因此无法直接使用DOject来声明对象。常用的方法是使用DOject指针。1.2.1类层次关系正像前面介绍的那样,DObject是整个数据层的基类,包含着各个模块的公共操作接口,是一个虚类。1.2.2类成员virtualvoidOutput(ostream&out)const;——流输出函数,保存类中数据virtualvoidInput(istream&in);——流输入函数,读取数据virtualvoidSave(char*fname)const;——将数据保存到文件中virtualvoidLoad(char*fname);——从文件中取出数据1.3线性表1.3.1DListDList是线性表逻辑类。它是具体存储类型线性表的基类,同样它内部封装着底层具体的线性表的公共操作接口。《数据结构》精品课程资料汇编31.3.1.1类层次关系DObject∟DList相关类:DObject头文件:DList.h1.1.1.1成员说明SetNull原型:voidSetNull()用法:清除线性表内容,无返回值。参数:无示例:#include“DList.h”voidmain(){Dlistintlist;list.SetNull();}输出:无RemoveAll原型:virtualvoidRemoveAll()用法:将线性表中的数据全部移除,无返回值参数:无示例:#include“DList.h”voidmain(){Dlistintlist;list.RemoveAll();}输出:无IsEmpty原型:virtualboolIsEmpty()const用法:判断线性表是否为空,返回类型为布尔型参数:无示例:#include“DList.h”voidmain(){Dlistintlist;list.IsEmpty();}输出:ture或着falseLength原型:virtualintLength()const《数据结构》精品课程资料汇编4用法:判断线性表的长度,返回值为整型参数:无示例:#include“DList.h”voidmain(){Dlistintlist;list.Length();}输出:整型数值Search原型:virtualintSearch(constT&x)const用法:在线性表中查找元素x,返回值为整型参数:模板类型参数示例:#include“DList.h”voidmain(){Dlistintlist;list.Search(23);}输出:在线性表中查到数据23所在的位置,查不到时返回-1。Insert原型:virtualvoidInsert(intk,constT&x)用法:在线性表中第k个位置插入元素x,无返回值参数:模板类型参数示例:#include“DList.h”voidmain(){Dlistintlist;list.Insert(2,56);}输出:无Delete原型:virtualvoidDelete(intk,T&x)用法:删除线性表中的第k个元素,将删除的元素放到变量x中,返回值无参数:模板类型参数可以是整型,字符型,双精度类型,字符串类型等。示例:#include“DList.h”voidmain(){Dlistintlist;list.Delete(2,35);}输出:无《数据结构》精品课程资料汇编51.3.2DListSeqDListSeq是线性表模板类,此类命名规则是因为存储结构是顺序表结构。它是线性表的具体实现的类。1.3.2.1类层次关系DOject∟DList∟DListSeq相关类:Doject,DList头文件:DListSeq.h1.3.2.2成员说明SetNull原型:voidSetNull()用法:清除线性表内容,无返回值。参数:无示例:#include“DListSeq.h”voidmain(){DlistSeqcharlistseq;listseq.SetNull();}输出:无参阅:DList::SetNullRemoveAll原型:voidRemoveAll()用法:删除顺序表存储的线性表中的所有数据,返回值无参数:无示例:#include“DListSeq.h”voidmain(){DlistSeqcharlistseq;listseq.RemoveAll();}输出:无参阅:DList::RemoveAllSet原型:voidSet(intMaxListSeqSize,boolcopy=true)用法:重新设置顺序表线性表的最大长度,返回值无《数据结构》精品课程资料汇编6参数:MaxListSeqSize:设置顺序表存储的线性表的最大长度,布尔变量:copy为true时,将原线性表中的数据拷贝到设置为新长度的线性表中,否则该线性表清空,最大长度设置为MaxListSeqList示例:#include“DListSeq.h”voidmain(){DlistSeqcharlistseq;listseq.Set(10,true);}输出:无IsEmpty原型:virtualboolIsEmpty()const用法:判断线性表是否为空,返回类型为布尔型参数:无示例:#include“DListSeq.h”voidmain(){DlistSeqcharlistSeq;listSeq.IsEmpty();}输出:ture:线性表空或着false:线性表不为空参阅:DList::IsEmptyLength原型:virtualintLength()const用法:判断线性表的长度,返回值为整型参数:无示例:#include“DListSeq.h”voidmain(){DlistSeqcharlistSeq;listSeq.Length();}输出:整型数值参阅:DList::LengthSearch原型:virtualintSearch(constT&x)const用法:在线性表中查找元素x,返回值为整型参数:模板类型参数针对对象建立的类型而确定示例:#include“DListSeq.h”voidmain(){DlistSeqcharlistSeq;listSeq.Search(a);}《数据结构》精品课程资料汇编7输出:在线性表中查到字符型数据a的位置,查找失败时返回-1。Insert原型:virtualvoidInsert(intk,constT&x)用法:在线性表中第k个位置插入元素x,无返回值参数:模板类型参数:依据建立的对象类型而定示例:#include“DListSeq.h”voidmain(){DlistSeqcharlistSeq;listSeq.Insert(6,y);}输出:无Delete原型:virtualvoidDelete(intk,T&x)用法:删除线性表中的第k个元素,将删除的元素放到变量x中,返回值无参数:模板类型参数可以是整型,字符型,双精度类型,字符串类型等。示例:#include“DList.h”voidmain(){Dlistcharlist;charx;list.Delete(2,x);}输出:无参阅:DList::DeleteGet原型:virtualboolGet(intk,T&x)const用法:取顺序表存储的线性表中的第k个元素,将该元素放到变量x中,返回值为布尔值参数:第一个参数:表示线性表中的第k个位置,第二个参数模板类型参数可以是整型,字符型,双精度类型,字符串类型等。示例:#include“DListSeq.h”voidmain(){DlistSeqcharlisSeq;charx;list.Get(2,x);}输出:true或着falseoperator[]原型:T&operator[](inti)用法:重载运算符[],取顺序表存储的线性表中下标是i的元素,返回值为建立对象的数据类型参数:表示线性表中的第i个位置的数据《数据结构》精品课程资料汇编8示例:#include“DListSeq.h”voidmain(){DlistSeqcharlisSeq;charx;x=listSeq[i];}输出:返回第i个数据Output原型:voidOutput(ostream&out)const用法:将数据以流的形式输出,无返回值参数:out输出流变量。示例:#include“DListSeq.h”voidmain(){DlistSeqcharlistSeq;ofstreamoutFile(“d:\\li1.txt”);listSeq.Output(outFile);}输出:无Input原型:voidInput(istream&in)用法:将数据以流的形式输入,无返回值参数:in输入流变量。示例:#include“DListSeq.h”voidmain(){DlistSeqcharlistSeq;ifstreaminFile(“d:\\li1.txt”);listSeq.Input(inFile);}输出:无说明:Input和OutPut两个函数接口一般不在数据层使用,而应用在视化框架中的导入导出操作中。1.4栈1.4.1DStack1.4.1.1类层次关系DOject∟DStack相关类:DOject《数据结构》精品课程资料汇编9头文件:DStack.h1.4.1.2成员说明Push原型:boolPush(Titem)=0用法:将数据item入栈,纯虚函数在子类中实现。返回值为布尔值。参数:入栈数据,类型与建立的对象数据类型一致Pop原型:boolPop(T&value)=0用法:将栈顶数据出栈放到变量value中,返回值为布尔值。参数:出栈数据所放位置的变量,类型与建立的对象数据类型一致Length原型:intLength()const=0用法:返回栈中数据长度,纯虚函数在子类中实现。返回值:整型。参数:无GetTop原型:TGetTop()=0用法:取栈顶数据,纯虚函数在子类中实现。返回值:返回栈顶数据,数据类型为建立的对象的数据类型。参数:无IsEmpty原型:boolIsEmpty()const用法:判断栈是否为空,纯虚函数在子类中实现。返回值为布尔值。参数:无Clear原型:boolClear()用法:清空栈,纯虚函数在子类中实现。返回值为布尔值。参数:无GetNodeNum原型:virtualintGetNodeNum()const=0用法:纯虚函数,供在子类中被重载,返回值为整型。参数:无Input原型:virtualvoidInput(istream&in)=0用法:纯虚函数,供在

1 / 115
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功