#ifndef STACK_H
#define STACK_H
#include <string>
const int MAXSIZE = 200;
template<typename T>
class Stack
{
public:
Stack():top(-1) {}
//是否为空
bool empty();
//进栈
void push(T);
//出栈
void pop();
//返回元素个数
size_t size();
//得到栈顶元素
T get_top();
//遍历
void print();
private:
T data[MAXSIZE];
int top;
};
#endif // STACK_H
template<typename T>
bool Stack<T>::empty()
{
if(top == -1)
return true;
else
return false;
}
template<typename T>
void Stack<T>::push(T e)
{
if(this->size() > MAXSIZE)
return ;
data[++top] = e;
}
template<typename T>
void Stack<T>::pop()
{
if(top == -1)
return ;
top--;
}
template<typename T>
size_t Stack<T>::size()
{
return top + 1;
}
template<typename T>
T Stack<T>::get_top()
{
if(!this->empty())
return data[top];
}
template<typename T>
void Stack<T>::print()
{
for(int i = 0; i < top + 1; ++i)
{
std::cout<<data[i]<<" ";
}
std::cout<<std::endl;
}
#ifndef QUEUE_H
#define QUEUE_H
#include <string>
const int MAX = 200;
template<typename T>
class Queue
{
public:
Queue():
front(0), rear(0){}
//是否为空
bool empty();
//进队
void push(T);
//出队
void pop();
//返回元素个数
size_t size();
//得到队首元素
T get();
//遍历
void print();
private:
T data[MAX];
int front;
int rear;
};
#endif // QUEUE_H
template<typename T>
bool Queue<T>::empty()
{
if(front == rear)
return true;
else
return false;
}
template<typename T>
void Queue<T>::push(T e)
{
if(rear <= MAXSIZE)
data[rear++] = e;
}
template<typename T>
void Queue<T>::pop()
{
if(front == rear)
return ;
front++;
}
template<typename T>
size_t Queue<T>::size()
{
return rear - front;
}
template<typename T>
T Queue<T>::get()
{
return data[front];
}
template<typename T>
void Queue<T>::print()
{
int i = front;
while(i != rear)
{
std::cout<<data[i]<<" ";
++i;
}
std::cout<<std::endl;
}
#include <iostream>
#include "stack.h"
#include "queue.h"
using namespace std;
int main(int argc, char *argv[])
{
// string s1("i"), s2("like"), s3("this");
// Stack<string> stack;
// stack.push(s1);
// stack.push(s2);
// stack.push(s3);
// stack.print();
// cout<<"---------------------------------------"<<endl;
// cout<<stack.empty()<<endl;
// cout<<stack.get_top()<<endl;
// cout<<stack.size()<<endl;
// stack.pop();
// stack.print();
string s1("i"), s2("like"), s3("this");
Queue<string> q;
q.push(s1);
q.push(s2);
q.push(s3);
q.print();
cout<<"---------------------------------------"<<endl;
cout<<q.empty()<<endl;
cout<<q.get()<<endl;
cout<<q.size()<<endl;
q.pop();
q.print();
return 0;
}