栈的结构特点就是先进后出,在一些算法中会用到该数据结构,比如:进行二叉树的层序遍历的时候等。
下面给出栈的代码,代码使用vector存储栈中的元素。
头文件:
//name:myStack1.h
#ifndef MY_STACK1_H
#define MY_STACK1_H
#include<vector>
#include<iostream>
//#define MAX_SIZE_S 1000
using 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():出栈