编号:( )字 号
《软件课程设计》报告
中国矿业大学计算机科学与技术学院
年 月
1
软件课程设计任务书
专业年级: 学生姓名:
任务下达日期: 200 年 月 日
课程设计日期: 200 年 月 日至 200年 月 日
课程设计题目:数据结构 类别 数据结构 题目序号 1顺序栈和链表栈的基本操作 5 统计选票问题 成绩
2
软件课程设计指导教师评阅书
指导教师评语(①基础理论及基本技能的掌握;②独立解决实际问题的能力;
③研究内容的理论依据和技术方法;④取得的主要成果及创新点;⑤工作态度及工作量;⑥总体评价及建议成绩;⑦存在问题等):
成 绩:
指导教师签字: 年 月
3
日
目录
七、 数据结构1----- 顺序栈和链表栈的基本操作(第四阶段 第一题 顺序栈和链表
栈.cpp)
7.1 需求分析……………………………………………………………………….…4 7.2 概要设计………………………………………………………………………...5 7.3 详细设计与编码………………………………………………………………...6 7.4 调试分析………………………………………………………………………...14 7.5 用户使用说明 ………………………………………………………………….16 7.6 设计心得………………………………………………………………………...16
八、 数据结构4----统计选票问题(第四阶段 第四题 统计选票问题.cpp)
8.1 需求分析……………………………………………………………………….…17 8.2 概要设计………………………………………………………………………...17 8.3 详细设计与编码………………………………………………………………...17 8.4 调试分析………………………………………………………………………...20 8.5 用户使用说明 …………………………………………………………………21 8.6 设计心得………………………………………………………………………...21
7.1需求分析
本程序是通过类的构造方法编写两种栈:顺序表栈和链表栈,以这顺序表和单向链表为基本构架,实现栈的基本操作:判空、.取栈顶元素、查找、.入栈、出栈、输出栈、求栈中元素个数。
为了实现方便,本程序以int型为输入类型。 输入形式:整型。
输入范围:整型数的范围。 输出形式:整型。
输出范围:整型数的范围。 测试数据:
<<顺序栈>>
入栈前:判空结果:栈空 入栈后:
(入栈的数:20 28) 判空:输出 栈不空
取栈顶元素:输出 栈顶元素为:28 查找:输入28 输出 存在 输出栈:top=1 0:20 1:28
求栈中元素个数:输出
栈中元素个数为:2
出栈:输出
出栈成功 top为28
4
输出栈:top=0 0:20
查找:输入28 输出不存在 出栈:出栈成功 top为20 判空:栈空 输出栈:top=-1
<<链表栈>>
入栈前:判空结果:栈空 入栈后:入栈元素30 38 判空:输出 栈不空
查找:输入38 输出 存在
取栈顶元素: 输出栈顶元素为:38 输出栈:
输出 栈中元素个数=2 1:38 2:30
求栈中元素个数:输出2
出栈:输出 出栈成功,栈顶元素为:38 输出栈:输出
栈中元素=1
1:30
出栈:输出 出栈成功,栈顶元素为:30 判空:输出 栈空
7.2概要设计
定义一个抽象类Stack,用于后面的顺序表栈类继承。
抽象类中包括了基本操作函数(在Stack类中不进行定义)入栈、出栈、取栈顶元素、判空、判满、求个数。 顺序栈:
定义一个顺序表栈类SeqStack,公有继承抽象类Stack,私有数据为指向顺序表的指针,栈顶元素标号,栈的最大空间以及溢出处理函数。公有数据除包括抽象类中的函数另有友元重载输出流函数、构造函数和析构函数以及查找函数。 链表栈:
定义一个结构体LinkNode,用于表示链表中的结点,其中包括数据域和链指针域以及LinkNode的构造函数。
定义一个单向链表类LinkedStack,公有继承抽象类Stack,私有数据为指向结点的指针,公有数据除包括抽象类中的函数另有重载输出流函数、构造函数、析构函数以及查找函数。 主函数:
主函数中定义int型指令,用于用户输入指令进行操作。
指令为1时建立顺序栈,指令为2时建立链表栈(通过switch~case语句控制)
在顺序栈指令中,定义一个顺序栈类的对象,再次定义一个指令demand1,用于用户输入指令对顺序栈进行操作,通过switch~case语句对对象进行成员函数的调用以实现相关操作。 注意在进行查找、入栈、出栈、取栈顶元素时都需要定义一个变量以接收成员函数返回的值。 对链表栈的调用类似顺序栈。
5