自定义存放任意类型的链表栈
/*
链表栈
*/
#ifndef _LIST_STACK_H_
#define _LIST_STACK_H_
template<class T>class ListStack;
template<class T>
class Node
{
friend ListStack<T>;
private:
T data;
Node<T> * link;
};
template<class T>
class ListStack
{
public:
ListStack();
~ListStack();
bool isEmpty()const;
int size()const;
T top()const;
void pop();
bool push(const T& t);
private:
Node<T> *nowTop;
int nowSize;
};
template<class T>
ListStack<T>::ListStack() :nowTop(nullptr), nowSize(0)
{
}
template<class T>
ListStack<T>::~ListStack()
{
Node<T>* next;
while (nowTop != nullptr)
{
next = nowTop->link;
delete nowTop;
nowTop = next;
}
}
template<class T>
bool ListStack<T>::isEmpty()const
{
if (nowSize == 0)
return true;
else
return false;
}
template<class T>
int ListStack<T>::size()const
{
return nowSize;
}
t