一个链栈有些地方不行大家帮忙改改
#include<iostream>
using namespace std;
template<class DataType>
struct Node
{
        DataType data;
	   Node<DataType> *next;
};
template<class DataType>
class LinkStack
{
private:
	   Node<DataTpe> *top;
public:
	  LinkStack()
	  {
	         top=new Node;  
			 top->next=NULL;
	  }
	  void Push(DataType x)
	  {
	         Node<DataType> s;
			 s=new Node;
			 s->next=top;
			 top=s;
	  }
	  DataType Pop()
	  {
	         Node<DataType> *p;//定义记录栈顶元素的指针
			 p=top;
			 top=top->next;
			 return p->data;//实现返回还是先return?
			 delete p;
	  }
	  DataType GetTop()
	  {
		     cout<<top->data<<endl;
	         return top->data;
	  }
	  bool Empty()
	  {
	         if(top->next==NULL)
				    return false;
			 else
				    return true;
	  }
};
void main()
{
        LinkStack<int> S;
}
------解决方案--------------------return p->data;//实现返回还是先return?
delete p;
你return了,还怎么delete
------解决方案--------------------这个地方也不对:
C/C++ code
void Push(DataType x)
{
    Node<DataType> *s;
    s=new Node<DataType>;//指针申明new
    s->data=x;//丢了一句
    s->next=top;
    top=s;
}
void GetTop()
{
    cout<<Pop()<<endl;//直接调用pop,无返回值
}
------解决方案--------------------
s=new Node<DataType> node;  
--------------------
你上面这句怎么回事?
s=new Node<DataType>();