1 LISTA ENCADENADAS
2 DEFINICIÓN Las 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
3 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.
4 OPERACIÓN PUSH La operación push, inserta un nodo nuevo a la cabeza de una lista SUBRUTINA PUSH(X:ITEM; LIST:LISTA) 1. P GETNODE 2. INFO(P) X 3. NEXT(P) LIST 4. LIST P P 1 2 3 4 P X LIST P X P X Y Y
5 OPERACIÓN POP La operación pop elimina el nodo que se encuentra en la cabeza de la lista. FUNCION POP(LIST LISTA) REGRESA UN ELEMENTO DE LA LISTA 1. P LIST 2. LIST NEXT(P) 3. X INFO(P) 4. FREENODE(P) 5. REGRESA X 1 24 X A LIST P AY P AY 3 P AY
6 OPERACIÓN INSAFTER Algoritmo para insertar un nodo después del nodo P. SUBRUTINA INSAFTER(P:APUNTADOR,X:..) 1. Q GETNODE 2. INFO(Q) X 3. NEXT(Q) NEXT(P) 4. NEXT(P) Q
7 INSAFTER 12 4 3 X Q Q XQ P AYZ XQ P AYZ XAY Z Resultado:
8 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)
9 DELAFTER 1 P AY Q X Y 2 B P AY Q B 3
10 ALGORITMO PARA LA CREACIÓN DE UNA LISTA ORDENADA SUBRUTINA PLACE(X:INFO; LIST:APUNTADOR) 1. FOUND FALSE 2. P LIST 3. Q NIL 4. MIENTRAS (PNIL) AND (NOT FOUND) HACER a. SI X
11 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.
12 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
13 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
14 Derivada de un polinomio FUNCION POLYDER(POLY:NODEPTR) REGRESA NODEPTR 1. P POLY 2. QX NIL 3. MIENTRAS PNIL HACER a. I INFO(P) b. XP I.X c. SI XP0 ENTONCES 1. I.C I.C*I.X 2. I.X I.X-1 3. QX POLYINSERT(I,QX) d. P NEXT(P) 4. REGRESA QX
15 Evaluación de un polinomio FUNCION POLYEVAL(POLY:NODEPTR; X1,Y1,Z1:REAL) REGRESA REAL 1. P POLY 2. VALOR 0 3. MIENTRAS PNIL HACER a. I INFO(P) b. VALOR VALOR + I.C*POT(X1,I.X)* POT(X1,I.Y)*POT(Z1,I.Z) c. P NEXT(P) 4. REGRESA VALOR