头文件定义模版
#ifndef STACK_H_
#define STACK_H_
template
class Stack
{
private:
int ss;
int top;
T * sp;
public:
Stack(int n);
~Stack();
void push(const T &s);
T & pop();
};
template
Stack::Stack(int n)
{
ss = n;
top = 0;
sp = new T[ss];
}
template
Stack::~Stack()
{
delete[] sp;
}
template
void Stack::push(const T &s)
{
sp[top++] = s;
}
template
T & Stack::pop()
{
return ss[--top];
}
#endif
main 函数
#include
#include "stack.h"
using std::cout;
using std::endl;
int main()
{
const int num = 10;
char * p[num] = { "NO.1 Alex", "NO.2 MIKE", "NO.3 Nike", "NO.4 YIHOO",
"NO.5 Yanjing", "NO.6 Andy", "NO.7 Hello", "NO.8 Wow", "NO.9 Pop", "NO.10 ddd" };
Stack wo(num);
int i;
for (i = 0; i < num; i++)
{
wo.push(p[i]);
}
cout << "弹出的栈:\n";
for (i = 0; i < num; i++)
cout << wo.pop() << endl;
system("pause");
return 0;
}