顺序栈的实现
来源:互联网 发布:mac os 10.11 cdr迅雷 编辑:程序博客网 时间:2024/06/11 12:14
一、实验目的
1、 熟练掌栈和队列的结构特点,掌握栈和队列的顺序存储和链式存储结构和实现。
2、 学会使用栈和队列解决实际问题。
二、实验内容
确定结点的具体数据类型和问题规模:
建立一个顺序栈,实现栈的压栈和出栈操作。
三、源代码
#SeqStack.h文件
const int StackSize = 10;template<class T>class SeqStack{public:SeqStack(); //构造函数,初始化一个空栈~SeqStack(); //析构函数为空void Push(T x);//入栈操作,将元素X入栈T Pop(); //出栈操作,将栈顶元素弹出T GetTop();//取栈顶元素int Empty();//判断栈是否为空void PrintStack(); //遍历栈喔private:T data[StackSize]; //存放栈元素的数组int top;//栈顶指针,为栈顶元素在数组中的下标};#SeqStack.cpp文件
#include"SeqStack.h"template<class T>SeqStack<T>::SeqStack(){top = -1;}template<class T>SeqStack<T>::~SeqStack(){}template<class T>void SeqStack<T>::Push(T x){if (top == StackSize - 1)throw "上溢";data[++top] = x;}template<class T>T SeqStack<T>::Pop(){if (top == -1)throw "下溢";top--;return data[top];}template<class T>T SeqStack<T>::GetTop(){if (top != -1)return data[top];}template<class T>int SeqStack<T>::Empty(){if (top == -1)return 1;elsereturn 0;}template<class T>void SeqStack<T>::PrintStack(){for (int i = top; i>=0; i--){cout << data[i] << " ";}cout << endl;}源.cpp文件
#include"SeqStack.cpp"#include<iostream>using namespace std;int main(void){SeqStack<int> s1;s1.Push(5);s1.Push(7);s1.Push(9);cout << "该顺序栈从栈顶到栈底的顺序为:";s1.PrintStack();cout<<"该顺序栈栈顶元素为:"<<s1.GetTop()<<endl;cout <<"该栈是否为空:"<< s1.Empty() << endl;s1.Pop();cout << "出栈一个元素后,该顺序栈从栈顶到栈底的顺序为:";s1.PrintStack();system("pause");return 0;}
实验截图如下:
顺序栈的实验蛮简单的,很快就能完成,没遇到什么挑战。
阅读全文
0 0
- 栈的顺序实现
- 顺序栈的实现
- 顺序栈的实现
- 顺序栈的实现
- 顺序栈的实现
- 顺序栈的实现
- 顺序栈的实现
- 顺序栈的实现。。。。
- 顺序栈的实现
- 顺序栈的实现
- 顺序栈的实现
- 顺序栈的实现
- 顺序栈的实现
- 顺序栈的实现
- 顺序栈的实现
- 顺序栈的实现
- 顺序栈的实现
- 顺序栈的实现
- xcode Build Phases 增加新内容;SDL2 renderer already associated with window 错误
- IT男如何护肤?上班族男性护肤的方法有哪些?[图]
- Redis存储
- sublime 3 注册码
- SpringMVC的Controller和Struts2的Action的区别
- 顺序栈的实现
- RabbitMQ 详解
- 作业
- 栈和队列——求最大子矩阵的大小
- 第十章
- 数据挖掘中常用的距离方法整理
- Disruptor无锁队列浅析
- 个人Java常见问题集合
- JDBC连接MySQL数据库