C++课程设计---栈类的设计与使用.docVIP

  • 12
  • 0
  • 约5.87千字
  • 约 20页
  • 2018-06-12 发布于贵州
  • 举报
C课程设计---栈类的设计与使用

报告编号: 综合课程设计报告 栈类的设计与使用 目 录 摘 要 1 第一章 前言 2 第二章 需求分析 3 第三章 设计研究的主要工作 4 3.1 总体设计 4 3.2 详细设计 6 3.2.1 用顺序链表实现 6 3.2.2 用单链表实现 7 3.2.3 用双向链表实现 10 第四章 系统实现 13 第五章 总结 17 参考文献: 17 栈类的设计与使用 摘 要 本小组在这次课程设计中选择了“栈类的设计与运用”这个课题,主要目的是要利用C++程序设计语言实现栈类的封装,使得整个程序可以完成出栈、进栈、获取栈顶元素、清空栈等一系列基本操作,也可以通过此次实训巩固C++和数据结构中的很多知识点。在实训过程中,我们通过分工合作完成了一个个独立的模块,并将这些模块整合起来,完成了这次设计。在设计中,我们考虑了封装栈的多种形式,采用了顺序链表、单链表、双向链表三种方法实现了栈的封装,并运用了多层菜单的模式,利用类模板实现了对多种类型数据的进、入栈,方便了用户的选择,实现了完全用户操作的目的,整个界面简洁却不失全面,层层递进,可以返回,并在实现出栈、入栈功能的基础上,可以按照用户的意愿来控制入栈、出栈的元素个数,更体现出程序的人性化。通过此次实训,我们不仅巩固了专业课的知识点,而且在平时查阅资料的过程中学到了很多新的知识,收获颇丰。 关键词:栈 类的封装 函数模板 第一章 前言 我们这组所选的课题是“栈的设计与使用”,也就是将栈封装成一个类,完成栈的一些基本操作,例如入栈、出栈、获取栈顶元素、获取栈内元素个数等。 在本学期所学的数据结构课程里,我们已经学过了关于栈的一些基本知识,栈是限制在表的一端进行插入和删除运算的线性表,通常称插入,删除的这一端为栈顶,另一端为栈底栈的顺序存结构简称为顺序栈,它是运算受限的线性表。因此,可用数组来实现顺序栈。栈顶位置是随着进栈和退栈操作而变化的栈的链式存储结构称为链栈,它的运算是受限的单链表,插入和删除操作仅限制在表头位置上进行。由于栈结构具有的后进先出的固有特性,栈数制转换文字编辑表达式计算 第三章 设计研究的主要工作 3.1 总体设计 我们为了这次课程设计,在工作开始前就画了流程图,使得整个系统更加明了化,系统采用三级选择操作,由用户进行操作选择不同结构的栈类、选择测试的数据类型、选择该数据的操作。流程图如下: 图 3.1.1 图3.1.1流程图说明了主函数调用其他函数的总体规划,根据用户的选择,选择使用不同结构封装的栈,当用户选择了要测试的结构的栈时,进入第二层选择。 图 3.1.2 图3.1.2显示第二级菜单,根据用户的选择,测试不同类型的数据。选择后会进入第三级菜单,即进入图3.1.3的流程 图 3.1.3 图3.1.3显示了底层菜单的流程图,根据用户的选择,运行入栈、出栈等不同的操作。 3.2 详细设计 3.2.1 用顺序链表实现 根据需要定义了一个栈类,class SqStack,用以实现的功能有:初始化一个栈、数据元素的入栈(int Push(T num))和出栈(int Pop(T num))、获取栈顶元素(int GetTop(T num))和栈的长度( int size())、判断栈是否为空(int Empty( ));下图显示了栈动态分配空间和指针指向的变化 图3.2.1.1 3.2.2 用单链表实现 在单链表程序中定义了两个类,结点类(class node)和栈类(class stack),可以实现的功能有:初始化一个栈、数据元素的入栈(void Push(T e))和出栈(T Pop( ))、获取栈顶元素(T GetTop( ))和栈的长度( int Getlength( ))、判断栈是否为空(bool Empty( ))。在栈类里,定义了一个构造函数stack( ),完成栈的初始化,在这个功能的实现中,利用运算符new给栈的头指针动态分配空间 head=new nodeT,在申请内存成功的情况下,利用语句head-next=NULL;length=0,即可完成栈的初始化。 入栈时,可执行以下操作:将待入元素放入待入结点内,然后修改头指针,使其指向待入结点,并将待入结点的指针指向空,这时,即完成一个元素的入栈操作,流程图和示意图如下: 图3.2.2.1 图3.2.2.2 出栈时,可执行以下操作: 修改头指针的指向,使其指向它所指结点的下一个结点,并同时释放它原先所指的结点,这样,即完成一个元素的出栈操作,流程图和示意图如下: 图3.2.2.3 图3.2.2.4 3.2.3 用双向链表实现 在实现栈封装中,使用到了两个类,分别是class N

文档评论(0)

1亿VIP精品文档

相关文档