stack和queue的模拟实现
1.Stack.h
#pragma once
#include<deque>
#include<vector>
#include<list>
namespace my
{
//template<class T,class Contain = std::vector<T>>
//template<class T, class Contain = std::list<T>>
template<class T, class Contain = std::deque<T>>
class stack
{
public:
stack()
{}
void push(const T& x)
{
con.push_back(x);
}
void pop()
{
con.pop_back();
}
bool empty()
{
return con.empty();
}
size_t size()
{
return con.size();
}
T& top()
{
return con.back();
}
private:
Contain con;
};
}
2.Queue.h
#pragma once
#include<deque>
#include<list>
namespace my
{
template<class T,class Contain=std::deque<T>>
//template<class T, class Contain = std::list<T>>
class queue
{
public:
queue()
{}
void push(const T& x)
{
con.push_back(x);
}
void pop()
{
con.pop_front();
}
size_t size()
{
return con.size();
}
bool empty()
{
return con.empty();
}
T& front()
{
return con.front();
}
T& back()
{
return con.back();
}
private:
Contain con;
};
}
3.test.cpp
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<iostream>
#include"Queue.h"
#include"Stack.h"
using namespace std;
int main()
{
my::queue<int>q;
q.push(1);
q.push(2);
q.push(3);
q.push(4);
while (!q.empty())
{
cout << q.front() ;
q.pop();
}
cout << endl;
my::stack<int>s;
s.push(1);
s.push(2);
s.push(3);
s.push(4);
while (!s.empty())
{
cout << s.top() ;
s.pop();
}
cout << endl;
return 0;
}
更多推荐



所有评论(0)