一个链栈有些地方不行大家帮忙改改
#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>();