Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/05/2015, 01:59
Avatar de Cardo2095
Cardo2095
 
Fecha de Ingreso: marzo-2015
Ubicación: En mi casa
Mensajes: 18
Antigüedad: 11 años, 6 meses
Puntos: 0
Mensaje Respuesta: insertar una cadena en una lista

Cita:
Iniciado por Cardo2095 Ver Mensaje
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");
}