日期:2014-05-18  浏览次数:20973 次

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