Ultima modifica da un moderatore:
Salve ragazzi, ho un po di confusione su come funzioni la pila con i puntatori, nell' inpila e nel fuoripila... potreste spiegarmi cosa avviene e come si codifica in c++ con i puntatori?
questo è il codice, penso sia corretto strutturalmente.
nodopila.h
pilaptr.h
questo è il codice, penso sia corretto strutturalmente.
nodopila.h
C++:
ifndef _NODO_PILA_H
#define _NODO_PILA_H
#include <iostream>
#include <stdlib.h>
template <class T>
class nodo{
public:
typedef T tipoelem;
/* Costruttore */
nodo(){
prec=NULL;
elemento = 0;
};
/* Distruttore */
~nodo(){
};
/* Operazioni su nodo*/
void setElemento(tipoelem elem){ elemento=elem;
};
tipoelem getElemento(){ return elemento;
};
nodo<tipoelem> getPrec(){ return prec;
};
void setPrec(nodo<tipoelem> *p){ prec=p;;
}
private :
tipoelem elemento;
nodo<tipoelem> *prec;
};
#endif // _NODO_PILA_H
pilaptr.h
C++:
/* Pila Puntatori */
#ifndef _PILAPTR_H
#define _PILAPTR_H
#include <iostream>
#include <stdlib.h>
using namespace std;
#include "nodopila.h"
template <class T>
class pilaPtr
{
public :
typedef nodo<T> *posizione;
typedef T tipoelem;
/*Costruttore */
pilaPtr();
pilaPtr(int);
/* Distruttore */
~pilaPtr();
/* Operazioni su Pila */
void creaPila();
bool pilaVuota();
tipoelem leggiPila() const;
void fuoriPila();
void inPila(tipoelem);
/* funzioni di servizio */
//void stampaPila();
private:
nodo<tipoelem> nodo;
posizione testa;
};
/* Implementazione funzioni */
/*******************************************************************/
template<class T>
pilaPtr<T>::pilaPtr(){
creaPila();
}
/*******************************************************************/
template<class T>
pilaPtr<T>::~pilaPtr(){
this->testa=NULL;
}
/*******************************************************************/
template<class T>
void pilaPtr<T>::creaPila(){
tipoelem ElementoNullo;
nodo.setElemento(ElementoNullo);
nodo.setPrec(NULL);
testa=NULL;
}
/*******************************************************************/
template<class T>
bool pilaPtr<T>::pilaVuota(){
return testa==NULL;
}
/*******************************************************************/
template<class T>
typename pilaPtr<T>::tipoelem pilaPtr<T>::leggiPila() const{
return testa->getElemento();
}
/*******************************************************************/
template<class T>
void pilaPtr<T>::fuoriPila(){
testa=testa->getPrec();
}
/*******************************************************************/
template<class T>
void pilaPtr<T>::inPila(tipoelem elem){
}
/*******************************************************************/
#endif // _PILAPTR_h