关于堆栈的一个问题?
我用链表实现堆栈这个数据结构,具体程序如下:
template<class T>
class LinkedStack;
template<class T>
class Node{
friend LinkedStack<T>;
private:
T data;
Node<T> *next;
};
template<class T>
class LinkedStack{
public:
LinkedStack();
~LinkedStack();
bool IsEmpty() const {return top==0;}
bool IsFull() const;
T Top() const;
LinkedStack<T>& Add(const T& x);
LinkedStack<T>& Delete(T& x);
private:
Node<T> *top;
};
template<class T>
LinkedStack<T>::LinkedStack()
{
top=NULL;
}
template<class T>
LinkedStack<T>::~LinkedStack()
{
Node<T> *pTemp;
while(top){
pTemp=top->next;
delete top;
top=pTemp;
}
}
template<class T>
bool LinkedStack<T>::IsFull() const
{
try {
Node<T> *p=new Node<T>;
delete p;
return false;
}
catch (xalloc) {return true;}
}
template<class T>
T LinkedStack<T>::Top() const
{
// if(IsEmpty()) throw OutOfBounds();
return top->data;
}
template<class T>
LinkedStack<T>& LinkedStack<T>::Add(const T& x)
{
Node<T> *p=new Node<T>;
p->data=x;
p->next=top;
top=p;
return *this;
}
template<class T>
LinkedStack<T>& LinkedStack<T>::Delete(T& x)
{
// if (IsEmpty()) throw OutOfBounds();
x=top->data;
Node<T> *p=top;
top=top->next;
delete p;
return *this;
}
这个程序编译没有错误,但我用它具体实现一个应用的时候,运行就会出现错误
经过调试发现错误出在构造函数上,但不知道怎么改了,也不知道为什么,大下们帮帮我