这是代码:
#include "DynIntStack.h"
DynIntStack::DynIntStack(void)
{
}
DynIntStack::~DynIntStack(void)
{
}
bool DynIntStack::IsEmpty()
{
return head;
}
void DynIntStack::Push(int v)
{
Element e = Element(v, head);
head = &e;
}
int DynIntStack::Pop()
{
if(head)
{
int r = head->v;
head = head->next;
return r;
}
}
int DynIntStack::Top()
{
if(head)
return head->v;
}
string DynIntStack::Print()
{
stringstream ss;
ss << "IntStack {";
Element *k = head;
while (k)
{
ss << k->v << ", ";
k = k->next;
}
ss << "}";
return ss.str();
}
每次我调用 push 时,“head”指针似乎都失去了它的价值。为什么?很多时候 head 元素会包含一个指向 ITSELF 的指针,这在这段代码中是不可能的......