顺序栈
来源:互联网 发布:网上免费打电话软件 编辑:程序博客网 时间:2024/06/01 09:40
顺序栈的操作
一、实验目的
掌握栈的顺序存储结构
验证顺序栈的基本操作
验证栈的特性
二、实验步骤
在工程中新建一个头文件SeqStack.h,gai 头文件包括顺序栈类SeqStack的定义
#ifndef SeqStack_H#define SeqStack_Hconst int StackSize = 10;template<class DataType>class SeqStack{public:SeqStack();~SeqStack() {}void Push(DataType x); //x入栈DataType Pop(); //将栈顶元素弹出DataType GetTop(); //取栈顶元素int Empty(); //判断栈是否为空void Print();//遍历栈private:DataType data[StackSize]; //存放栈元素的数组int top; //栈顶指针,指示栈顶元素在数组中的下标};#endif
新建一个源程序文件SeqStack.cpp,该文件包括类SeqStack中成员函数的定义
#include"SeqStack.h"template<class DataType>SeqStack<DataType>::SeqStack(){top = -1;}template<class DataType>void SeqStack<DataType>::Push(DataType x){if (top == StackSize - 1)throw"上溢";top++;data[top] = x;}template<class DataType>DataType SeqStack<DataType>::Pop(){DataType x;if (top == -1)throw"下溢";x = data[top--];return x;}template<class DataType>DataType SeqStack<DataType>::GetTop(){if (top != -1)return data[top];}template<class DataType>int SeqStack<DataType>::Empty(){if (top == -1)return 1;else return 0;}template<class DataType>void SeqStack<DataType>::Print(){if (Empty()){};for (int num = 0; num <= top; num++) {cout << data[num] << "" << endl;}}
再建一个源程序文件SeqStack_main.cpp,该文件包括主函数
#include<iostream>using namespace std; //引入输入输出流#include"SeqStack.cpp" //引入类SeqStack的成员函数定义void main() {SeqStack<int>S;if (S.Empty())cout << "当前栈空" << '\n' << endl;else cout << "当前栈非空" << '\n' <<endl;cout << "将1,2,3,4执行入栈操作"<<endl;S.Push(1);S.Push(2);S.Push(3);S.Push(4);cout << "栈中元素为:"<< endl;S.Print();cout << "栈顶元素为:" << S.GetTop() << '\n' << endl;cout << "执行一次出栈操作" << endl;S.Pop();cout << "栈中元素为:" << endl;S.Print();}
结果
三、实验心得
1.空满判断:top指示栈顶元素在数组中的位置,栈满的时候top=StackSize-1,栈空的时候top=-1。
2.什么时候先用后加(减),什么时候先加(减)后用?
入栈时先判断栈是否满,若有空位,插入的时候指针top先往上移,再存入值,所以插入data[++top]=x,top先加再用。
出栈先判断是否为空,若非空返回的数值即弹出栈的元素是当前top指向位置的值,return data[top],再把栈的指针往下移一位top=top-1,所以若非空,return data[top--],top先用再减。
3.遍历这里写的从栈底开始
4.总出现发现意外的文件尾,怎么办?
阅读全文
0 0
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- 顺序栈
- javescript学习
- ios8随机mac功能
- 利用Echarts实现堆叠柱状图
- Path to Python(2)
- Linux虚拟机的登陆以及基础指令
- 顺序栈
- Openlayers4+servlet实现切片的本地缓存
- springboot学习笔记(八) Swagger2
- 提供读配置文件的监控服务器程序
- 详述 Mac 系统下安装及卸载 Python 的方法
- 老生常谈PHP位运算的用途
- React native 自定义弹窗(android使用原生ios弹窗)
- 大型站点SEO优化的核心重点
- 将注记feature添加到map中的方法。