一个链栈有些地方不行大家帮忙改改
#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
[解决办法]
这个地方也不对:
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>();