这是头文件LinkStack.h
//LinkStack.h
#ifndef LINKSTACK_H_INCLUDED
#define LINKSTACK_H_INCLUDED
#include<iostream>
using namespace std;
template<class T>
struct Node
{
T data;
Node<T> *next;
};
template<class T>
class LinkStack
{
public:
LinkStack();
bool empty()const;
void pop();
void push(const T &x);
int size()const;
const T&top()const;
void print()const;
private:
Node<T>* _top;
int _size;
};
template<class T>
LinkStack<T>::LinkStack():_size(0),_top(NULL)
{
}
template <class T>
bool LinkStack<T>::empty()const
{
return _top==NULL;
}
template<class T>
void LinkStack<T>::pop()
{
if(_top==NULL)
{
cout<<"stack is empty"<<endl;
return;
}
Node<T> *t=_top;
_top=_top->next;
delete t;
_size--;
}
template<class T>
void LinkStack<T>::push(const T&x)
{
Node<T>*t=new Node<T>;
t->data=x;
t->next=_top;
_top=t;
_size++;
}
template<class T>
int LinkStack<T>::size()const
{
return _size;
}
template<class T>
const T&LinkStack<T>::top()const
{
if(_top==NULL)
{
cout<<"stack is empty"<<endl;
T t;
return t;
}
return _top->data;
}
template<class T>
void LinkStack<T>::print()const
{
Node<T>*t=_top;
while(t!=NULL)
{
cout<<t->data<<" ";
t=t->next;
}
cout<<endl;
}
#endif // LINKSTACK_H_INCLUDED
这是一个使用示例
#include <iostream>
#include"LinkStack.h"
using namespace std;
int main()
{
LinkStack<int> s;
s.push(1);
s.push(7);
s.print();
s.print();
s.push(2);
s.print();
cout<<s.top()<<endl;
s.pop();
s.print();
s.pop();
s.print();
s.pop();
s.print();
return 0;
}
这是运行截图
- 本文链接: http://hjwblog.com/archives/链栈类模板实现
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!