La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Estructuras de Datos Manipulación de la Especificación de la Lista en C++

Presentaciones similares


Presentación del tema: "Estructuras de Datos Manipulación de la Especificación de la Lista en C++"— Transcripción de la presentación:

1 Estructuras de Datos Manipulación de la Especificación de la Lista en C++

2 Ejemplo 1: Asuma un tipo lista, ¿Qué hace la siguiente función? int contar_nota(lista L, float nota) { int count=0; L.a_primero(); for(int i=1; i<=L.tamanno(); i++) { if(L.actual().VeraNota()==nota){ count++;} L.a_siguiente(); } return count; }

3 void borra_lista(lista &L) { int n=L.tamanno(); L.a_primero(); for(int i=1; i<=n; i++) { L.borre(); } void borra_lista(lista &L) { int n=L.tamanno(); L.a_primero(); for(int i=1; i<=n; i++) { L.borre(); L.a_siguiente(); } OJO: Falla cuando ha borrado el último Ejemplo 2:

4 Recordando a_siguiente L.a_siguiente(): Se sitúa en el elemento siguiente al actual. PRE:  L  L  {NULL}  i = Cursor POST: if(i = n){Cursor = i} else{Cursor = i + 1} Genera error cuando la lista es vacía

5 Ejemplo 3: ¿Qué hace la siguiente función? void concatenar(lista &L1, lista &L2) { L1.a_ultimo(); L2.a_primero(); for(int i=1; i<=L2.tamanno(); i++) { //Inserta elem. actual de L2 después del actual de L1 L1.inserte_despues(L2.actual()); //El cursor de L1 queda en el elem. recién insertado L2.a_siguiente(); //Avanza en el cursor de L2 }

6 Ejemplo 4: void borra_impares(lista &L) { int n=L.tamanno(); L.a_primero(); L.borre(); L.a_siguiente(); for(int i=2; i<n; i=i+2) { L.borre(); L.a_siguiente(); } Ojo recordar que: La operación borre() deja el cursor señalando el elemento anterior al que se borra excepto si el elemento a borrar es el primero, en tal caso el cursor se queda en la primera posición.

7 Ejemplo 5: void eliminar_perdedores(lista &L, float notap) { int t=L.tamanno(); L.a_primero(); for(int i=1; i<=t; i++) { if(L.actual().VeraNota()<notap) { if(L.actual() == 1){ L.borre();} else{ L.borre();L.a_siguiente();} } else { L.a_siguiente();} } Ejercicio: Eliminar los perdedores pero partiendo desde el último (de atrás hacia delante)

8 Ejemplo 6: Suponga se permiten elementos repetidos void pode(lista &L) { estudiante comp; for(int s=1; s<=L.tamanno(); s++) { L.a_iesimo(s); comp=L.actual(); for(int r=s+1; r<=L.tamanno(); r++) { L.a_siguiente(); if( comp.key() == L.actual().key() ) { L.borre(); r--; }


Descargar ppt "Estructuras de Datos Manipulación de la Especificación de la Lista en C++"

Presentaciones similares


Anuncios Google