栈比较简单就不说了,这里是用vector实现的,链表的话也差不多。
#ifndef STACK_H
#define STACK_H
#include <iostream>
#include <vector>
using namespace std;
template<typename Comparable>
class stack
{
public:
stack() : topOfStack(-1) {}
int size() const
{
return theArray.size();
}
bool isEmpty() const
{
return *this.size() == 0;
}
void push(const Comparable & x)
{
theArray.push_back(x);
++topOfStack;
}
Comparable pop()
{
--topOfStack;
theArray.pop_back();
return theArray.back();
}
Comparable top() const
{
return theArray.back();
}
private:
vector<int> theArray;
int topOfStack;
};
#endif // STACK_H
测试
#include "stack.h"
int main(int argc, char *argv[])
{
stack<int> test;
for(int i = 0; i < 10; ++i)
test.push(i);
cout << "长度:" << test.size() << endl;
cout << "栈顶元素:" << test.top() << endl;
test.pop();
cout << "长度:" << test.size() << endl;
cout << "栈顶元素:" << test.top() << endl;
return 0;
}