listas encadenadas
TRANSCRIPT
Daniel Zambrano22.197.321
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
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.
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
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.
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
INSAFTER1 2
43
XQ Q
XQ
P
A Y Z
XQ
P
A Y Z
XA Y ZResultado:
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)
DELAFTER1
P
A Y
Q
X Y
2
B
P
A Y
Q
B3
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)
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.
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
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