13/05/2015, 01:59
|
| | | Fecha de Ingreso: marzo-2015 Ubicación: En mi casa
Mensajes: 18
Antigüedad: 9 años, 8 meses Puntos: 0 | |
Respuesta: insertar una cadena en una lista Cita:
Iniciado por Cardo2095 de hecho ya lo hice jeje pero aun hay algo que me inquieta a la hora de imprimir la cadena o nose si sera que es asi por ejemplo si ingreso asd me imprime: asd,sd,d
como que me va eliminando la primera letra y lo que quiero es que me quede de esta forma: a,s,d
Clase Nodo Código PHP: template<class T> class Nodo{
private: T * elemento; Nodo <T> * sig;
public: Nodo <T>(T *);
~Nodo <T>(); void setElemento(T*); T * getElemento(); void setSig(Nodo <T> *); Nodo <T> * getSig(); };
//-----------------------------------IMPLEMENTACIÓN-------------------------------------------------------
template<class T> Nodo<T>::~Nodo(){}
template<class T> Nodo <T>::Nodo(T * pElem){ elemento = pElem; sig = NULL; }
template<class T> void Nodo <T>::setElemento(T* Elem){ elemento = Elem; }
template<class T> T* Nodo <T>::getElemento(){ return elemento; }
template<class T> void Nodo <T>::setSig(Nodo <T> * pSig){ sig = pSig; }
template<class T> Nodo<T> * Nodo <T>::getSig(){ return sig; }
Clase Lista Código PHP: #include"Nodo.h" #include<iostream> #include<fstream> using namespace std;
template<class T> class Lista{
private: Nodo <T>* primero; Nodo <T>* actual;
public: Lista(); ~Lista();
void setactual(Nodo<T>*); void setprimero(Nodo<T>*);
Nodo<T>* getActual(); Nodo<T>* getPrimero();
void Insertar(T *pDato); void ImprimeLista(); T* Buscar(int id); void Eliminar(T *k); bool Existencia(int id); bool Vacio() const;
};
//-----------------------------------IMPLEMENTACIÓN-------------------------------------------------------
template <class T> Lista<T>::Lista() { primero = actual= NULL; }
template <class T> Lista<T>::~Lista() { }
//-----------------------------------------------------------------------------------
template<class T> void Lista<T>::setactual(Nodo<T>*n){ actual = n; }
template<class T> void Lista<T>::setprimero(Nodo<T>*n){ primero = n; }
template<class T> Nodo<T>* Lista<T>::getActual(){ return actual; }
template<class T> Nodo<T>* Lista<T>::getPrimero(){ return primero; }
//-----------------------------------------------------------------------------------
template <class T> void Lista <T>::Insertar(T *pDato){
Nodo<T>* nodo = new Nodo<T>(pDato); actual = primero;
if (Vacio()){ primero = nodo; }
else{ while (actual->getSig()){ actual = actual->getSig(); } actual->setSig(nodo); }
}
template <class T> void Lista<T>::ImprimeLista(){ system("cls"); actual = primero;
if (actual == NULL) { cout << "La lista esta vacia" << endl; }
else{ while (actual != NULL){ cout<< actual->getElemento()<< endl; actual = actual->getSig(); } } }
template <class T> T* Lista<T>::Buscar(int id) { Nodo<T>* anterior = NULL; actual = primero; while ((actual != NULL) && (actual->getElemento()->getId() != id)){ anterior = actual; actual = actual->getSig(); } if (actual->getElemento()->getId() == id) { return actual->getElemento(); } else return false; }
template <class T> void Lista<T>::Eliminar(T *k){//borra uno en especifico Nodo<T>* anterior = NULL; actual = primero; while (actual && actual->getElemento()->getId() != k->getId()){ anterior = actual; actual = actual->getSig(); } if (!actual || actual->getElemento()->getId() != k->getId()) cout << "No encontro el elemento"; else{ if (!anterior){ primero = actual->getSig(); } else{ anterior->setSig(actual->getSig()); } } delete actual; }
template <class T> bool Lista<T>::Existencia(int id){ actual = primero; while (actual != NULL){ if (actual->getElemento()->getId() == id){ return true; } actual = actual->getSig(); } return false; }
template <class T> bool Lista<T>::Vacio() const{ return (primero == NULL); }
Código PHP: void main{ Lista <char> l1;
char cad[50]; int tam;
cout << "Escriba la Notacion Infija a Convertir en Prefija" << endl; gets_s(cad); tam = strlen(cad);
for (int i = 0; i <= tam;i++){ l1.Insertar(&cad[i]); }
l1.ImprimeLista(); system("pause"); }
|