下载此文档

实验2堆栈ADT.doc


文档分类:IT计算机 | 页数:约18页 举报非法文档有奖
1/18
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/18 下载此文档
文档列表 文档介绍
实验2堆栈ADT目标在这个实验中·创建两个堆栈ADT的实现一个基于数组表示,另一个基于单链表表示·使用模板产生一个通用的堆栈数据结构·创建一个程序计算后缀形式的算术表达式·创建一个可以正确地处理成对的小括号和大括弧的计算表达式的程序·分析通过使用一个堆栈可以提供的排列种类概述一些使用线性数据结构的应用程序并不需要列表ADT提供所支持的所有运算。虽然我们可以使用列表ADT创建这些应用程序,但是,最后产生的程序会有些笨重,而且效率较低。一个可选方法是定义一个新的线性数据结构,它支持更加紧凑的运算集。通过仔细定义这些ADT,可以使我们定义的ADT适合一系列不同的应用程序,产生的数据结构比列表ADT更容易应用,并且更有效。资料个人收集整理,勿做商业用途堆栈是一种限定的线性数据结构的例子。在一个堆栈中,数据项是从最后人栈(栈顶top)到最先入栈(栈底bottom)排列,所有的插人和删除运算都限定在栈顶。我们可以使用Push运算在栈顶插入一个数据项,或使用pop运算删除一个栈顶数据项,一个push和pop运算的序列如下所示。资料个人收集整理,勿做商业用途 Pusha Pushb Pushc Pop Pop c b b b a a a a a _ _ _ _ _这些插入和删除运算的限制造成了“后进先出”(LIFO)的行为,这是堆栈的特性。虽然堆栈数据结构定义得很窄,但是,它在系统软件中使用得非常多,对基本堆栈的支持是大多数计算机体系结构的基本组成要素之一。资料个人收集整理,勿做商业用途堆栈是一种被频繁使用的数据结构。虽然所有的程序共享相同的堆栈的定义:一个相同类型的数据项序列,在其一端进行插人和删除。但是堆栈中存储的数据项的类型在各个程序中是各不相同的,一些程序使用整数型的堆栈,一些使用字符型的、浮点数型的、指针型的等等。资料个人收集整理,勿做商业用途通过使用C++的typedef语句解决这个问题。那种方法可以使用,但是它是费力的并且易于出错。这种更好的方法是C++的模板类(templateclass)。一个模板是用来作为一个模式,这个模式不是最后的产品,但可以用来更快地产生最后的产品。C++的模板类(其中堆栈是一个例子),可以使我们不因为每一个堆栈数据项的类型不同而创建不同的堆栈实现,而且不需要频繁地使用typedef语句。相应地,我们可以创建一个数据类型是一般类型的堆栈实现。在我们的代码中必须指定数据类型的地方,我们可以用一个任意的字符串代替以后可能希望使用的实际的数据类型。我们将会使用一个字符串“DT”(DataType)代表一般类型的数据类型。现在在类声明()中或在类定义()中指定一个实际的C++数据类型。可以延期指定实际的数据类型,直到产生这个类一个对象的实例时再指定。资料个人收集整理,勿做商业用途下面是一些新的用于创建和使用一个模板类的简单规则。字符串template<classDT>必须正确地在类声明之前和每一个类成员函数之前。请记住,DT是我们用来代表模板类中任一数据类型的任意标识符。资料个人收集整理,勿做商业用途语句classStack{ public; …可以修改成 template<classDT> classStack { Public; …一个函数定义的开始原来是Stack::Stack(intmaxNumber)throw(bad_alloc)现在成为 Template<classDT> Stack<DT>::Stack(intmaxNumber)throw(bad_alloc)资料个人收集整理,勿做商业用途现在类名的每一次使用必须包括被尖括号括起来的一般类型的数据类型名。每一个字符串“Stack”的使用都变成了字符串“Stack<DT>”。在构造函数定义的例子中,类标识由“Stack::”变成“Stack<DT>::”。还请注意,一个例外情况是构造函数名没有被修改,还是“Stack”。资料个人收集整理,勿做商业用途 Template<classDT> Stack<DT>::Stack(intmaxNumber)throw(bad_alloc)资料个人收集整理,勿做商业用途在类声明和类定义文件中出现的数据类型名应被选择用来代表一般类型的字符串代替。例如,语句 int*dataItems; //Arraycontainingthestackdataitems资料个人收集整理,勿做商业用途//(integers)成为DT*dataItems; //Arraycontainingthestackdataitems资料个人收集整理,勿做商业用途//(generic)当实例化类的一个对象时,真实的数据类型(在尖括号里)附在类名之后。语句//Aseparatestackimplemen

实验2堆栈ADT 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数18
  • 收藏数0 收藏
  • 顶次数0
  • 上传人ipod0b
  • 文件大小575 KB
  • 时间2019-03-09