listas encadenadas

13

Click here to load reader

Upload: zambrano-daniel

Post on 16-Aug-2015

27 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Listas encadenadas

Daniel Zambrano22.197.321

Page 2: Listas encadenadas

DEFINICIÓNLas listas están formadas por una serie de nodos; cada nodo tienen un campo de información y un apuntador (puntero) al siguiente nodo de la lista.

list

info(p) next(p)

nodo(p)

nil

Page 3: Listas encadenadas

OPERACIONES BÁSICAS

Una operación básica es la de obtener un nodo vacío. Esta operación se denomina getnode. La operación regresa un apuntador al nodo vacío.La operación complementaria regresa un nodo al sistema, esta operación es llamada freenode(p) y libera el nodo apuntado por p.

Page 4: Listas encadenadas

OPERACIÓN PUSHPush es simplemente el método por el cual va agregando un Dato nuevo a la Pila tomando en cuenta la Capacidad Máxima (Max) de almacenar un dato.Detalle:Compara en un principio el Top con Max, si la condición no cumple es imposible insertar mas datos a la Pila, de otra forma lo que hace es Incrementar el valor de Top, y copia el valor de Elemento en Pila[Top]. De esta forma el dato ya esta insertado.

LIST

P X

Page 5: Listas encadenadas

OPERACIÓN POPPara retirar un elemento de la pila S y asignarlo a una variable del mismo tipo que el tipo de los elementos de la pila, usaremos la operación pop escribiéndola como:v=pop(S);En donde v es una variable que almacena el valor del elemento que estaba en la cima de S. Hacer esta operación tiene algunas implicaciones:•La variable v debe ser del mismo tipo que los elementos almacenados en la pila.•Solamente se puede retirar un elemento de la pila a la vez.•Antes de la operación, e era el elemento en la cima, ahora ya no lo es más. El apuntador ``cima'' decrece en una unidad.

Page 6: Listas encadenadas

OPERACIÓN INSAFTER

Algoritmo para insertar un nodo después del nodo P.SUBRUTINA INSAFTER(P:APUNTADOR,X:..)1. Q GETNODE2. INFO(Q) X3. NEXT(Q) NEXT(P)4. NEXT(P) Q

Page 7: Listas encadenadas

INSAFTER1 2

43

XQ Q

XQ

P

A Y Z

XQ

P

A Y Z

XA Y ZResultado:

Page 8: Listas encadenadas

ALGORITMO DELAFTER

Algoritmo para eliminar el nodo después del nodo P.SUBRUTINA DELAFTER(P:APUNTADOR;X:..)1. Q NEXT(P)2. X INFO(Q)3. NEXT(P) NEXT(Q)4. FREENODE(Q)

Page 9: Listas encadenadas

DELAFTER1

P

A Y

Q

X Y

2

B

P

A Y

Q

B3

Page 10: Listas encadenadas

ALGORITMO PARA LA CREACIÓN DE UNA LISTA ORDENADASUBRUTINA PLACE(X:INFO; LIST:APUNTADOR)1. FOUND FALSE2. P LIST3. Q NIL4. MIENTRAS (P<>NIL) AND (NOT FOUND) HACER

a. SI X<=INFO(P) ENTONCES1. FOUND FALSE

b. ELSE1. Q P2. P NODE[P].NEXT

5. SI Q=NIL ENTONCESa. PUSH(LIST,X)

6. ELSEb. INSAFTER(Q,X)

Page 11: Listas encadenadas

Representación de polinomios Un polinomio en (x, y, z) puede representarse como una lista.

En cada nodo se almacena el exponente de cada variable y el valor del coeficiente. Por tanto cada nodo de la lista será un registro con los campos: C - para el coeficiente y X, Y, Z - para los exponentes de x, y, z respectivamente.

Page 12: Listas encadenadas

FUNCION POLYINSERT(I:INFOTYPE;FIRST:NODEPTR) REGRESA NODEPTR

1. SI FIRST=NIL ENTONCES

a. PUSH(I,FIRST)

2. SINO

a. A INFO(FIRST).X

b. B INFO(FIRST).Y

c. C INFO(FIRST).Z

d. SI (A < I.X) OR ((A=I.X)AND(B<I.Y)) OR

((A=I.X) AND (B=I.Y) AND (C<I.Z)) THEN

1. PUSH(I,FIRST)

e. SINO

1. S FIRST

2. FOUND FALSO

ALGORITMO DE INSERCIÓN EN POLINOMIO

Page 13: Listas encadenadas

3. MIENTRAS (NEXT(S)<>NIL) AND (NOT FOUND) HACER

a. Q NEXT(S)

b. A INFO(Q).X

c. B INFO(Q).Y

d. SI (A < I.X) OR ((A=I.X)AND(B<I.Y)) OR

((A=I.X) AND (B=I.Y) AND (C<I.Z)) ENTONCES

1. S NEXT(S)

e. SINO

1. INSAFTER(S,I)

2. FOUND VERDADERO

3. SI NOT FOUND ENTONCES

a. INSAFTER(S,I)

4. REGRESA FIRST

ALGORITMO DE INSERCIÓN EN POLINOMIO

CONTINUACIÓN