顺序栈的实现

来源:互联网 发布: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;}

实验截图如下:



四、实验心得

顺序栈的实验蛮简单的,很快就能完成,没遇到什么挑战。


原创粉丝点击