Instituto universitario politécnico
“Santiago Mariño”
Extensión Porlamar
Escuela de ingeniería de sistemas
Estructura de datos
Ejercicio de Listas simples
Bachiller:
PlacencioJohana
C.I:19.909.628
Prof. Maria Langone
Porlamar, Febrero
#include "Lista.h"
#include "Carro.h"
#include "Furgoneta.h"
#include "Camion.h"
#include "Moto.h"
using namespace std;
Lista::Lista()
{
//aqui es cabeza = 0 y tama = o
cabeza = 0;
tama = 0;
}
bool Lista::existeElemento(string dato)
{
Nodo *actual = cabeza;
while(actual!=0)
if(actual->verDato()->verPlaca()==dato)
return true;
else
actual = actual->verSiguiente();
return false;
}
int tipos()
{
int tipo;
cout<<"Seleccione el tipo de vehiculo"<<endl;
cout<<"1 Carro"<<endl;
cout<<"2 Moto"<<endl;
cout<<"3 Furgoneta"<<endl;
cout<<"4 Camion"<<endl;
cin>>tipo;
return tipo;
}
void Lista::agregarNodo()
{
string placa,color,marca,modelo;
cout<<"Ingresar placa del auto"<<endl;
cin>> placa;
cout<<"Ingresar color del auto"<<endl;
cin>> color;
cout<<"Ingresar marca del auto"<<endl;
cin>> marca;
cout<<"Ingresar modelo del auto"<<endl;
cin>> modelo;
Vehiculos * vehiculo;
switch(tipos())
{
case 1: vehiculo = new Carro(placa,color,marca,modelo);break;
case 2: vehiculo = new Moto(placa,color,marca,modelo);break;
case 3: vehiculo = new
Furgoneta(placa,color,marca,modelo);break;
case 4: vehiculo = new Camion(placa,color,marca,modelo);break;
default:
cout<<"Tipo de vehiculo desconocido.nVehiculo no
agregado!"<<endl;
return;
}
agregarNodo(new Nodo(vehiculo));
}
Lista& Lista::operator<<(Nodo* dato)
{
if(cabeza==0) cabeza = dato;
Nodo *actual = cabeza;
for(int i=1; i<tama;i++)
actual = actual->verSiguiente();
actual->modificarSiguiente(dato);
tama++;
return *(this);
}
Nodo * Lista::operator[](int posicion)
{
Nodo *actual = cabeza;
for(int i=0; i>posicion-1; i++)
actual=actual->verSiguiente();
actual->modificarSiguiente(actual->verSiguiente()->verSiguiente());
return actual;
}
void Lista::agregarNodo(Nodo*dato)
{
if(cabeza==0) cabeza = dato;
Nodo *actual = cabeza;
for(int i=1; i<tama;i++)
actual = actual->verSiguiente();
actual->modificarSiguiente(dato);
tama++;
}
void Lista::imprimirLista()
{
Nodo *actual = cabeza;
Vehiculos * vehiculoActual;
while(actual!=0)
{
vehiculoActual = actual->verDato();
cout<<vehiculoActual->verPlaca()<<'t';
cout<<vehiculoActual->verTipo()<<'t';
cout<<vehiculoActual->verColor()<<'t';
cout<<vehiculoActual->verMarca()<<'t';
cout<<vehiculoActual->verModelo()<<'t';
cout<<endl;
actual = actual->verSiguiente();
}
}
int Lista::numeroNodos()
{
return tama; //solo dice return tama;
}
void Lista::eliminarElementoPorDato(const string& dato)
{
Nodo *anterior=0,*actual = cabeza;
while(actual!=0)
{
if( (actual->verDato()->verPlaca()==dato) && (anterior!=0) )
{
anterior->modificarSiguiente(actual->verSiguiente());
tama--;
return;
}
anterior = actual;
actual=actual->verSiguiente();
}
}
void Lista::eliminarElementoPorPosicion(int posicion)
{
Nodo *actual = cabeza;
for(int i=0; i>posicion-1; i++)
actual=actual->verSiguiente();
actual->modificarSiguiente(actual->verSiguiente()->verSiguiente());
tama--;
}
bool Lista::listaVacia()
{
if(tama==0)
return true;
return false;
}

Ejercicio estructura

  • 1.
    Instituto universitario politécnico “SantiagoMariño” Extensión Porlamar Escuela de ingeniería de sistemas Estructura de datos Ejercicio de Listas simples Bachiller: PlacencioJohana C.I:19.909.628 Prof. Maria Langone Porlamar, Febrero
  • 2.
    #include "Lista.h" #include "Carro.h" #include"Furgoneta.h" #include "Camion.h" #include "Moto.h" using namespace std; Lista::Lista() { //aqui es cabeza = 0 y tama = o cabeza = 0; tama = 0; } bool Lista::existeElemento(string dato) { Nodo *actual = cabeza; while(actual!=0) if(actual->verDato()->verPlaca()==dato) return true; else actual = actual->verSiguiente(); return false; } int tipos() { int tipo; cout<<"Seleccione el tipo de vehiculo"<<endl; cout<<"1 Carro"<<endl; cout<<"2 Moto"<<endl; cout<<"3 Furgoneta"<<endl; cout<<"4 Camion"<<endl; cin>>tipo; return tipo;
  • 3.
    } void Lista::agregarNodo() { string placa,color,marca,modelo; cout<<"Ingresarplaca del auto"<<endl; cin>> placa; cout<<"Ingresar color del auto"<<endl; cin>> color; cout<<"Ingresar marca del auto"<<endl; cin>> marca; cout<<"Ingresar modelo del auto"<<endl; cin>> modelo; Vehiculos * vehiculo; switch(tipos()) { case 1: vehiculo = new Carro(placa,color,marca,modelo);break; case 2: vehiculo = new Moto(placa,color,marca,modelo);break; case 3: vehiculo = new Furgoneta(placa,color,marca,modelo);break; case 4: vehiculo = new Camion(placa,color,marca,modelo);break; default: cout<<"Tipo de vehiculo desconocido.nVehiculo no agregado!"<<endl; return; } agregarNodo(new Nodo(vehiculo)); } Lista& Lista::operator<<(Nodo* dato) { if(cabeza==0) cabeza = dato; Nodo *actual = cabeza; for(int i=1; i<tama;i++) actual = actual->verSiguiente();
  • 4.
    actual->modificarSiguiente(dato); tama++; return *(this); } Nodo *Lista::operator[](int posicion) { Nodo *actual = cabeza; for(int i=0; i>posicion-1; i++) actual=actual->verSiguiente(); actual->modificarSiguiente(actual->verSiguiente()->verSiguiente()); return actual; } void Lista::agregarNodo(Nodo*dato) { if(cabeza==0) cabeza = dato; Nodo *actual = cabeza; for(int i=1; i<tama;i++) actual = actual->verSiguiente(); actual->modificarSiguiente(dato); tama++; } void Lista::imprimirLista() { Nodo *actual = cabeza; Vehiculos * vehiculoActual; while(actual!=0) { vehiculoActual = actual->verDato(); cout<<vehiculoActual->verPlaca()<<'t'; cout<<vehiculoActual->verTipo()<<'t'; cout<<vehiculoActual->verColor()<<'t'; cout<<vehiculoActual->verMarca()<<'t';
  • 5.
    cout<<vehiculoActual->verModelo()<<'t'; cout<<endl; actual = actual->verSiguiente(); } } intLista::numeroNodos() { return tama; //solo dice return tama; } void Lista::eliminarElementoPorDato(const string& dato) { Nodo *anterior=0,*actual = cabeza; while(actual!=0) { if( (actual->verDato()->verPlaca()==dato) && (anterior!=0) ) { anterior->modificarSiguiente(actual->verSiguiente()); tama--; return; } anterior = actual; actual=actual->verSiguiente(); } } void Lista::eliminarElementoPorPosicion(int posicion) { Nodo *actual = cabeza; for(int i=0; i>posicion-1; i++) actual=actual->verSiguiente(); actual->modificarSiguiente(actual->verSiguiente()->verSiguiente()); tama--;
  • 6.