void Simbolo::mostrar(const Lista<char>& figuraMostrar){ Lista<char>::posicion pos = figuraMostrar.primera(); while(pos != figuraMostrar.fin()){ cout << figuraMostrar.elemento(pos); pos = figuraMostrar.siguiente(pos); } cout << endl; }
void imprimeListaInversa(Lista<TipoElemento>& l){ posicion p,prim=l.primero(); cout << "Imprimiendo lista inversa..." << endl; if (l.estaVacia()){ cout << "La lista está vacia"; } else{ p=l.fin(); do{ p=l.anterior(p); cout << l.recupera(p)->dameCadena() << endl; }while(p!=prim); } }
//Funcion privada que realiza todas las simetrias segun la opcion que //le pase, X = simetria eje X, Y = simetria eje Y y A = ambas simetrias Lista<char> Simbolo::simetria(char opcion){ //Lista<char> simetrica(figura); //No funciona bien el constructor de copia de esta reprensentacion Lista<char> simetrica; for(Lista<char>::posicion pos = figura.primera(); pos != figura.fin(); pos = figura.siguiente(pos)){ simetrica.insertar(figura.elemento(pos), simetrica.fin()); } Lista<char>::posicion pos = simetrica.primera(); while(pos != simetrica.fin()){ if(opcion == 'Y' || opcion == 'A'){// A = Ambos if(simetrica.elemento(pos) == 'D'){ simetrica.elemento(pos) = 'I'; } else if(simetrica.elemento(pos) == 'I'){ simetrica.elemento(pos) = 'D'; } } if(opcion == 'X' || opcion == 'A'){// A = Ambos if(simetrica.elemento(pos) == 'B'){ simetrica.elemento(pos) = 'S'; } else if(simetrica.elemento(pos) == 'S'){ simetrica.elemento(pos) = 'B'; } } pos = simetrica.siguiente(pos); } return simetrica; }
void usaListaComputadoras(){ Lista<Computadora> alpha,beta; Lista<Computadora>* gamma; Computadora* insertable,buscable("",""); posicion p; cout << "Listas de Computadoras" << endl; alpha.fijaNombre("Alpha"); alpha.fijaEliminaElementos(true); beta.fijaNombre("Beta"); beta.fijaEliminaElementos(true); insertable=new Computadora("Toshiba","Alpha"); alpha.inserta(insertable); insertable=new Computadora("HP","Beta"); alpha.inserta(insertable); alpha.imprimeLista(); insertable=new Computadora("IBM","Gamma"); beta.inserta(insertable); insertable=new Computadora("Apple","Delta"); beta.inserta(insertable); beta.imprimeLista(); cout << "Concatenando listas..." << endl; gamma=alpha.concatenar(beta); gamma->imprimeLista(); cout << "Dime cual busco: " << endl; cout << "Marca: "; cin >> buscable.marca; cout << "Modelo: "; cin >> buscable.modelo; if ((p=gamma->localiza(&buscable))!=gamma->fin()){ cout << gamma->recupera(p)->dameCadena() << endl; } else{ cout << "No se encontro elemento"; } cout << endl; pausar(); delete gamma; }
void usaListaPersonas(){ Lista<Persona> alpha,beta; Lista<Persona>* gamma; Persona *insertable,buscable(0,""); posicion p; cout << "Listas de Personas" << endl; alpha.fijaNombre("Alpha"); alpha.fijaEliminaElementos(true); beta.fijaNombre("Beta"); beta.fijaEliminaElementos(true); insertable=new Persona(1,"Luis"); alpha.inserta(insertable); insertable=new Persona(2,"Alberto"); alpha.inserta(insertable); alpha.imprimeLista(); insertable=new Persona(3,"Hugo"); beta.inserta(insertable); insertable=new Persona(4,"Paco"); beta.inserta(insertable); beta.imprimeLista(); cout << "Concatenando listas..." << endl; gamma=alpha.concatenar(beta); gamma->imprimeLista(); cout << "Dime cual busco: " << endl; cout << "Clave: "; cin >> buscable.clave; if ((p=gamma->localiza(&buscable))!=gamma->fin()){ cout << gamma->recupera(p)->dameCadena() << endl; } else{ cout << "No se encontro elemento"; } cout << endl; pausar(); cout << "Cuenta de objetos es: " << cuentaObjetos << endl; pausar(); delete gamma; }
int main() { Arreglo arr; Lista lista; int op; do{ cout << "\nIngrese la opcion : "<<endl; cout << "1. Insertar nuevo empleado "<<endl; cout << "2. Inicio "<<endl; cout << "3. Final "<<endl; cout << "4. Siguiente "<<endl; cout << "5. Recuperar "<<endl; cout << "6. Eliminar "<<endl; cout << "7. Mover "<<endl; cout << "8. Imprimir empleados "<<endl; cin>>op; switch(op) { case 1: { int id; string nombre; int pos; cout << "\nIngrese la posicion donde insertar "; cin>>pos; cout << "\nIngrese el codigo de empleado "; cin>>id; cout << "Ingrese el nombre "; cin>>nombre; Nodo *a = new Nodo(id,nombre) ; if(lista.insertar(pos,a)) cout << "\nInsertado exitosamente "<<endl; else cout << "\nNo se pudo insertar "<<endl; } break; case 2: { Nodo* b = lista.ini(); if(b!=NULL) { cout<<"\nEl inicio es: "; cout<<"-----"<<b->emp->id<<" "; cout<<b->emp->nombre<<endl; } else cout<<"\nArreglo vacio"<<endl; } break; case 3: { Nodo* c=lista.fin(); if(c!=NULL) { cout<<"\nEl fin es: "; cout<<"-----"<<c->emp->id<<" "; cout<<c->emp->nombre<<endl; } else cout<<"\nArreglo vacio"<<endl; } break; case 4: { int pos; cout << "\nIngrese la posicion para conocer su siguiente "; cin>>pos; Nodo* c=lista.siguiente(pos); if(c!=NULL) { cout<<"\nEl siguiente de la posicion "<<pos<<" es: "; cout<<"-----"<<c->emp->id<<" "; cout<<c->emp->nombre<<endl; } else cout<<"\nEsta posicion no tiene siguiente"<<endl; } break; case 5: { int p1; cout<<"\nIngrese la posicion a buscar: "; cin>>p1; Nodo * d= lista.recuperar(p1); if(d!=NULL) { cout<<"-----"<<d->emp->id<<" "; cout<<d->emp->nombre<<endl; } else cout<<"No se encuentra, revise parametros"<<endl; } break; case 6: { int p; cout<<"\nIngrese la posicion a eliminar: "; cin>>p; if(lista.eliminar(p)) cout<<"\nEliminado exitosamente"<<endl; else cout<<"\nNo se pudo eliminar, revise los parametros "<<endl; } break; case 7: { int from,to; cout<<"\nIngrese la posicion de procedencia: "; cin>>from; cout<<"\nIngrese la posicion de destino: "; cin>>to; lista.mover(from,to); } break; case 8: { cout<<"\nListando empleados "<<endl; lista.imprimir(); } break; } }while ( op >= 1 && op<=8 ); return 0; }
int main() { Lista lis; Persona buscable,insertable,recuperado; posicion p; imprimirCentrado("TDA Lista con clases","#"); pausar(); cout << endl; inicializaABC(&lis); pausar(); cout << "Imprimiendo lista:" << endl; lis.imprimeLista(); pausar(); insertable.clave=26; insertable.nombre="El insertado 26 al principio"; cout << "Tratando de insertar..." << endl; lis.inserta(&insertable,lis.primero()); pausar(); buscable.clave=5; buscable.nombre="Uno con clave 5"; cout << "Buscando elemento..." << endl; lis.imprimeElemento(&buscable); cout << endl; pausar(); p=lis.localiza(&buscable); cout << "Localizado elemento en posicion p=" << p << "..." << endl; pausar(); cout << "Imprimiendo lo que recibi de posicion" << endl; lis.imprimeElemento(lis.recupera(p)); cout << endl; pausar(); recuperado=*lis.recupera(p); cout << "El elemento recuperado es: "; lis.imprimeElemento(&recuperado); cout << endl; pausar(); cout << "Suprimiendo elemento en posicion p=" << p << endl; lis.suprime(p); lis.imprimeLista(); cout << "Insertando al principio de la lista..." << endl; lis.inserta(&insertable,lis.primero()); pausar(); cout << "Imprimiendo lista:" << endl; lis.imprimeLista(); cout << "Elemento recuperado antes de suprimir de la lista: "; lis.imprimeElemento(&recuperado); cout << endl << "Eliminando ultimo elemento de la lista" << endl; lis.suprime(lis.anterior(lis.fin())); pausar(); lis.imprimeLista(); cout << "Insertando al final de la lista" << endl; insertable.clave=27; insertable.nombre="El insertado 27 al final"; lis.inserta(&insertable,lis.fin()); pausar(); lis.imprimeLista(); pausar(); imprimeListaInversa(&lis); return 0; }