数据结构—栈(一)

来源:互联网 发布:mysql数据库忘记密码 编辑:程序博客网 时间:2024/05/21 12:21

栈(Stack),特殊的线性表,只能在表头进行插入和删除操作。又称为后进先出表、LIFO表。

因为之前发帖问动态规划时别人说可以用栈实现动态规划而去看了看,写下来留作记录~

栈实现的基本操作有:1、Empty()——判断一个栈是否为空栈;

2、Full()——判断一个栈是否为满栈;(与1及其类似)

3、Top()——返回栈顶元素;

4、Push(x)——把X插入栈顶;

5、Pop()——删除栈顶元素并输出;

看书上说栈分为顺序实现的链式指针形实现,我先学了顺序实现,用得是数组和C++的类实现。

下面是代码实现:

#include <iostream>using namespace std;class Stack{private:int top,*date,MAX;public:Stack(int size);                      //构造函数~Stack();                             //析构函数bool Empty();                         //判断是否为空int Top();                            //获取栈顶值void Push(int x);                     //插入一个元素void Pop();                           //删除一个元素int getSize();                        //获取栈的大小};//----------------------------------成员函数的实现------------------------------Stack::Stack(int size){top=0;MAX=size;date=new int(size);}Stack::~Stack(){delete[] date;}bool Stack::Empty(){if(top==0)return 1;return 0;}int Stack::Top(){if(top==0)cout<<"栈为空。"<<endl;return date[top-1];}void Stack::Push(int x){if(top==MAX)cout<<"栈已满。"<<endl;else{date[top]=x;top++;}}void Stack::Pop()                      //通过让后一位的元素覆盖当前元素实现删除。{if(top==0)cout<<"栈为空。"<<endl;else{top--; cout<<date[top]<<endl; }}int Stack::getSize(){return size;}

0 0
原创粉丝点击