C++实现如下:
#include <iostream>
using namespace std;
template<typename T>
struct Node
{
T data;//数据域
Node *next;//指针域
};
//链表类
template<typename T>
class stack
{
public:
stack();
~stack();
bool push(const T &e);//压栈
bool pop(const T &e);//出栈
private:
int size;//链表大小
Node<T> *top;//头指针
};
template<typename T>
stack<T>::stack()
{
size = 0;
top = NULL;
}
template<typename T>
stack<T>::~stack()
{
}
template<typename T>
bool stack<T>::push(const T &e)
{
Node<T> *newnode = new Node < T > ;
newnode->data = e;
newnode->next = top;
top = newnode;
this->size++;
return true;
}
template<typename T>
bool stack<T>::pop(const T &e)
{
if (top == NULL)//栈为空栈
{
return false;
}
top = top->next;
e = top->data;
this->size--;
return true;
}
void main()
{
stack<int> s1;
s1.push(1);
system("pause");
}