Com relação a linguagens de programação e a estruturas de dados, julgue o item subseqüente.
O código C++ a seguir implementa corretamente uma pilha.
class ErroPilha {
private:
string msg;
public:
ErroPilha (string msg) {
this ->msg = msg;
}
string what ( ) {
return msg;
}
} ;
class Pilha {
class NoPilha {
public:
int v;
NoPilha *proximo;
};
private:
NoPilha *primeiro;
public;
Pilha () {
primeiro = 0;
}
void push (int) throw (bad_alloc);
int pop () throw (ErroPilha);
};
void Pilha: :push (int v) throw (bad_alloc) {
NoPilha *t;
t = new NoPilha ();
t-> v = v;
if (primeiro == 0) {
primeiro = t;
primeiro ->proximo = 0;
}
else {
t-> proximo = primeiro;
primeiro = t;
}
}
int Pilha: : pop () throw (ErroPilha) {
if (primeiro = = 0)
throw ErroPilha ("Pilha vazia");
NoPilha *t;
t = primeiro;
primeiro = primeiro->proximo;
int x;
x = t ->v;
delete t;
return x;
}