Código:
#include <iostream>
#include <string>
#include "TLista.hpp"
using namespace std;
using namespace bblLista;
int main()
{
char tipo;
CLista<tipo> a;
unsigned nnodos;
char car;
unsigned num;
cout<<"MENU:"<<endl<<"1.INSERTAR NODOS"<<endl<<"2.ELIMINAR NODO"<<endl<<"3.ESCRIBIR LISTA"<<endl<<"4.BORRAR LISTA"<<endl;
cin>>num;
switch(num){
case 1:
cout<<"Cuantos nodos desea insertar? ";
cin>>nnodos;
for(unsigned i=0;i<=nnodos; i++){
cout<<"Introduce el caracter: ";
cin>>car;
insertar(a,car);
}
break;
case 2:
cout<<"Escriba el caracter del nodo que desea eliminar: ";
cin>>car;
eliminar(a,car);
break;
case 3:
consultarlista(a);
break;
case 4:
borrarlista(a);
break;
}
}
el CLista.hpp
Código:
#ifndef _TLISTA_HPP_
#define _TLISTA_HPP_
#include <iostream>
#include <cstdlib>
using namespace std;
namespace bblLista{
const unsigned int MAX_LISTA = 100; // Máximo tamaño de la lista
template <typename tipo>
class CLista{
public:
CLista();
void insertar(CLista &lista, const char car);
void eliminar(CLista &lista,const char car);
void consultarlista(CLista &lista);
void borrarlista(CLista &lista);
private:
struct TpNodo{
tipo car;
TpNodo *sig;
};
typedef TpNodo *puntalista;
puntalista lista;
unsigned longitud;
//metodos pribados
void insertaralprincipio(CLista &lista, const char car);
void insertaralfinal(CLista &lista, const char car);
}; // Fin de CLista
} // Fin de bblLista
#endif
y aqui es donde tengo el problemaa:
Código:
#include "CLista.hpp"
#include <iostream>
#include <cstdlib>
using namespace std;
using namespace bblLista;
template <typename tipo>
CLista<tipo>::CLista(): longitud(0) {};
template <typename tipo>
void CLista<tipo>::insertaralprincipio(CLista lista, const tipo car){
TpNodo pun;//puntero auxiliar
pun=new TpNodo;
pun->car=car;
pun->sig=lista;//recuerda que esetamos insertando al principio
lista=pun;//lista señalaba a otro nodoya creado.
}
template <typename tipo>
void CLista<tipo>::insertaralfinal(CLista &lista, const tipo car){
TpNodo pun;
pun=lista;
while(pun->sig != NULL){
pun=pun->sig;
}
pun->sig=new TpNodo;
pun=pun->sig;
pun->car=car;
pun->sig=NULL;
}
template <typename tipo>
void CLista<tipo>::insertar(CLista &lista, const tipo car){
if(lista !=NULL){
insertaralfinal(lista,car);
}
else insertaralprincipio(lista,car);
++longitud;
}
void CLista<tipo>::eliminar(CLista &lista,const tipo car){
TpNodo pun,aux;
pun=lista;
while(pun->car!=car || pun->sig !=NULL){
aux=pun;
pun=pun->sig;
}
if(pun->sig==NULL){
aux->sig=NULL;
delete pun;
}
else {
aux->sig=pun->sig;
delete pun;
}
--longitud;
}
template <typename tipo>
void CLista<tipo>::consultarlista(CLista &lista){
TpNodo pun;
pun=lista;
for(unsigned i=0; i<= longitud; i++){
cin<<pun->car;
pun=pun->sig;
}
}
template <typename tipo>
void CLista<tipo>::borrarlista(CLista &lista){
TpNodo aux;
while(lista !=NULL){
aux=lista;
lista=lista->sig;
delete aux;
}
}