算法导论之栈

来源:互联网 发布:mac怎么去掉dashboard 编辑:程序博客网 时间:2024/06/10 04:48

栈的结构特点就是先进后出,在一些算法中会用到该数据结构,比如:进行二叉树的层序遍历的时候等。

下面给出栈的代码,代码使用vector存储栈中的元素。

头文件:

//name:myStack1.h#ifndef MY_STACK1_H#define MY_STACK1_H#include<vector>#include<iostream>//#define MAX_SIZE_S 1000using namespace std;using std::vector;template<typename T>class myStack1{private:vector<T> stack1; //栈的容器int top;  //栈顶迭代器public:myStack1(){top = -1;}~myStack1(){ }//判断栈是否为空bool is_empty(){return stack1.empty();}void push(T value){++top;stack1.push_back(value);}void pop(){if (is_empty())cout << "stack is underflow" << endl;else{vector<T>::iterator it = stack1.end();--it;stack1.erase(it);--top;}}void display(){for (int i = 0; i <= top; i++)cout << stack1[i] << " ";cout << endl;}};#endif

测试代码:

//name:main.h#include"myStack1.h"int main(){vector<int> test_data = { 1, 2, 3, 4, 5 };myStack1<int> mystack = myStack1<int>();for (int i = 0; i < test_data.size(); i++)mystack.push(test_data[i]);mystack.display();mystack.pop();mystack.display();return 0;}

STL中关于Stack的函数不是很多:

empty():检测是否为空

top():返回栈顶的元素

push():入栈

pop():出栈



原创粉丝点击