Вы находитесь на странице: 1из 6

1

Estructuras de Datos Pr actica 1 Listas enlazadas Construcci on de la lista y sus operaciones Nombre Grupo Calicaci on
Jos e S anchez Ju arez 10 de febrero de 2014

1.

Objetivo
Construir la lista enlazada y sus operaciones utilizando apuntadores.

2.

Teor a

Las ventajas de usar listas enlazadas es que no se requiere memoria contigua y no es necesario hacer desplazamientos debido a inserciones y relleno de vacios creados por la eliminaci on de elementos.

2.1.

Pseudoc odigo

Las listas enlazadas simples se construyen por medio del siguiente pseudoc odigo:

Algorithm .1: Construcci on de una lista enlazada simple


1 2 3 4 5 6 7 8

TIPE { TIPE TIPE } TIPE TIPE TIPE

TipoLista = REGISTRO Info:TipoDato; sig:TipoLista;

/* Inicio de declaraciones */

9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

NL, NuevoElemento, a :TipoLista; n:ENTERO; Imprimir Lista():VACIO; /* Inicio del programa */ NL := NULL; n := EsDeTec(ENTERO); while n > 0 do NuevoElemento := NEW TipoLista; NuevoElemento.Info := EsDeTec(TipoDato); if NL == NULL then NL := NuevoElemento; NuevoElemento.sig := NULL; a := NL; else a.sig := NuevoElemento; NuevoElemento.sig := NULL; a := a.sig; n := n - 1;

Imprimir Lista(NL); funcion Imprimir Lista():VACIO; var NL:TipoLista; begin a := NL; while a <> NULL do EsEnPan(TipoDato); a := a.sig; end

2.2.

C odigo C++

Que programada en C++ se hace como sigue:


1 2 3 4 5 6

# include < iostream > using namespace std ; struct TipoLista {

7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55

int num ; TipoLista * sig ; }; TipoLista * nl , *a , * NuevoElement o ; int n ; void ImprimirList a ( TipoLista * nl ) ; int main () { nl = NULL ; cout << " Escribir el numero de elementos " << endl ; cin >> n ;

while ( n > 0) { NuevoElemento = new TipoLista ; cout << " Escribir el dato numero : " ; cin >> NuevoElemento -> num ; if ( nl == NULL ) { nl = NuevoElemento ; NuevoElemento -> sig = NULL ; a = nl ; } else { NuevoElemento -> sig = NULL ; a -> sig = NuevoElement o ; a = a -> sig ; } n = n - 1; } ImprimirList a ( nl ) ; return 0; } void ImprimirList a ( TipoLista * nl ) { a = nl ; while ( a != NULL ) { cout << a -> num << endl ; a = a -> sig ; } }

2.3.

Operaciones de la lista enlazada

Las listas enlazadas tienen la siguientes operaciones: 1. INSERTAR(x, p, L). Esta funci on inserta x en la posici on p de la lista L, pasando los elementos de la posici on p y siguientes a la posici on inmediata posterior. Esto quiere decir que si L es a1 , a2 , . . . , an , se convierte en: a1 , a2 , . . . , ap1 , x, ap , . . . , an Si p es FIN(L), entonces L se convierte en a1 , a2 , . . . , an , x. Si la lista L no tiene posici on p, el resultado es indenido. 2. LOCALIZA(x, L). Esta funci on devuelve la posici on de x en la lista L. Si x gura m as de una vez en L, la posici on de la primera aparici on de x, es la que se devuelve. Si x no gura en la lista, entonces se devuelve FIN(L). 3. RECUPERA(p, L). Esta funci on devuelve el elemento que esta en la posici on p de la lista L. El resultado no esta denido si p = FIN(L) o si L no tiene posici on p. Es necesario que los elementos sean de un tipo que puedan ser devueltos por la funci on, aunque es posible modicar la funci on RECUPERA para devolver un apuntador o un objeto de tipo tipo elemento. 4. SUPRIME(p, L). Esta funci on elimina el elemento en la posici on p de la lista L. Si L es a1 , a2 , . . . , an , entonces L se convierte en: a1 , a2 , . . . , ap1 , ap+1 , . . . , an El resultado no esta denido si L no tiene posici on p o si p = FIN(L). 5. SIGUIENTE(p, L) y ANTERIOR(p, L) devuelven las posiciones siguiente y anterior, respectivamente, a p en la lista L. Si p es la u ltima posici on de L, SIGUIENTE(p, L) = FIN(L). SIGUIENTE(p, L) no esta denida si p es FIN(L). ANTERIOR no esta denida si p es 1. Ambas funciones est an indenidas cuando L no tiene posici o n p. 6. ANULA(L). Esta funci on ocasiona que L se convierta en una lista vac a y devuelve la posici on FIN(L). 7. PRIMERO(L). Esta funci on devuelve la primera posici on de la lista L. Si L esta vac a, la posici on que devuelve es FIN(L). 8. IMPRIME LISTA(L). Imprime los elementos de L en su orden de aparici on en la lista.

3.

Actividades
Realice las siguientes actividades:

1. Construya en C++ una lista de alumnos. Con NumeroLista, Nombre, Boleta y Calicaci on. 2. Implemente en pseudoc odigo y C++ la operaci on LOCALIZA(x, NL), presentando un ejemplo de la lista de alumnos. 3. Implemente en pseudoc odigo y C++ la operaci on ISERTAR(x, p, NL), presentando un ejemplo de la lista de alumnos. 4. Implemente en pseudoc odigo y C++ la operaci on RECUPERA(p, NL), presentando un ejemplo de la lista de alumnos. 5. Implementar en pseudoc odigo y C++ las dem as operaciones con ejemplos de la lista de alumnos.

4.

Cuestionario

Imprimir s olo la portada de la pr actica para agregar el cuestionario contestado. 1. Escriba en pseudoc odigo y C++ la construcci on de la lista enlazada de alumnos. 2. Escriba en pseudoc odigo y C++ la operaci on de ISERTAR(x, p, NL), presentando un ejemplo de la lista de alumnos. 3. Escriba en pseudoc odigo C++ la operaci on de LOCALIZA(x, NL), presentando un ejemplo de la lista de alumnos. 4. Escriba en pseudoc odigo y C++ la operaci on de RECUPERA(p, NL), presentando un ejemplo de la lista de alumnos. 5. Implementar en pseudoc odigo y C++ las dem as operaciones. 6. Remarque en todas las operaciones construidas la condici on de paro de los ciclos. Si entrega c odigo de alg un lenguaje de alto nivel entregarlo en dos columnas a la par con el pseudoc odigo. Entregar el cuestionario con letra bien hecha.

Вам также может понравиться