Trabajooss

Páginas: 6 (1432 palabras) Publicado: 1 de julio de 2012
Pilas
Es un caso especial de lista lineal, en el cual las operaciones de supresión e inserción se realizan siempre por un mismo extremo llamado Tope. Las pilas trabajan con el método LIFO (ultimo en entrar, primero en salir).
Ejemplo de pila: correspondencia de paréntesis.
CLS
DIM PILA$(10): TOPE=0
INPUT”INGRESE CADENA:”, CADENA$
FOR I=1 TO LEN (CADENA$)
CAR$= MID$(CADENA$, I, 1)
IFCAR$=” (“THEN
TOPE= TOPE+1
PILA$(TOPE) =” (”
ELSE
IF CAR$=”)” THEN
IF TOPE=0 THEN
PRINT”HAY MAS PARENTECIS CERRADOS QUE ABIERTOS”
I=LEN (CADENA$)+1
TOPE=TOPE-1
ELSE
PILA$(TOPE) =” “
TOPE=TOPE-1
END IF
END IF
END IF
NEXT I
IF TOPE=0 THEN
PRINT”SINTAXIS CORRECTA”
ELSE
IF TOPE > 0 THEN
PRINT”HAY MAS PARENTECIS ABIETOS QUE CERRADOS”
END IF
END IF

Colas
Es otro caso deestructura lineal, en la misma las inserciones se realizan estrictamente por un extremo llamado fondo y las supresiones por el extremo opuesto llamado frente, las colas operan con el método FIFO (primero en entrar primero en salir)
Ejemplo de cola: simulación de una cola.
DIM COLA$(10)
FRENTE =0: FONDO=0
C=1
FOR I=1 TO C
INPUT”DESEA INSERTAR UN ELEMENTO? (1-SI 2-NO):”, A
IF A=1 THEN
IFFONDO=10 THEN
FONDO=1
IF FONDO=FRENTE THEN
PRINT”COLA LLENA”
FONDO=FONDO-1
ELSE
PRINT”INGRESE UN ELEMENTO:”, COLA$ (FONDO)
END IF
ELSE
FONDO=FONDO+1
IF FONDO=FRENTE THEN
PRINT”COLA LLENA”
FONDO= FONDO-1
ELSE
INPUT”INGRESE UN ELEMENTO:”, COLA$(FONDO)
IF FRENTE=0 THEN
FRENTE=1
END IF
END IF
END IF
END IF
INPUT”DESEA EIMINAR UN ELEMENTO ? (1-SI 2-NO):”, B
IF B=1 THEN
IF FRENTE=0AND FONDO=0 THEN
PRINT”COLA VACIA”
I=C+1
ELSE
COLA$(FRENTE)=” “
IF FRENTE= FONDO THEN
FRENTE=0
FONDO=0
ELSE
IF FRENTE=10 THEN
FRENTE=1
ELSE
FRENTE= FRENTE +1
END IF
END IF
END IF
END IF
INPUT”DESEA CONTINUAR? (1-SI 2-NO):”, OP
IF OP=1 THEN
C=C+1
ELSE
I=C+1
END IF
NEXT I
IF FONDO>0 AND FRENTE>0 THEN
IF FONDO>FRENTE THEN
FOR I= FRENTE TO FONDO
PRINT COLA$(i)
NEXT IELSE
IF FRENTE >FONDO THEN
FOR I= FONDO TO FRENTE
PRINT COLA$(i)
NEXT I
ELSE
FOR I= FONDO TO FRENTE
PRINT COLA$(i)
NEXT I
END IF
END IF
END IF

Listas Ligadas
Es una forma no secuencial de representar una estructura de datos lineal. Una lista ligada está compuesta por nodos ligados entre sí.
Ejemplo de lista ligada.
CLS
GOSUB CREADIS
PRINT”MENU PRINCIPAL”
PRINT”1- INSERTARDATO”
PRINT”2-ELIMINAR DATO”
PRINT”3-LEER LISTA”
PRINT”4-SALIR”
INPUT “INGRESE OPCION:”, OP
WHILE OP 4
SELECT CASE OP
CASE IS=1
GOSUB INSERTA
CASE IS=2
GOSUBV ELIMINA
CASE IS=3
GOSUB LEE
END SELECT
CLS
INPUT”INGRESE OPCION:”, OP
WEND
END
CREADIS:
DIM DATO$(20): INICIO=0
DIM SIG (20): D=1
FOR I=1 TO 19
SIG (I) =I +1
NEXT I
SIG (20) =0
RETURN
INSERTA:
GOSUB ASIGNODOINPUT”INGRESE EL DATO PARA EL NODO”, DATO$(N)
IF
INICIO=0 THEN
INICIO=N
ELSE
INPUT”INGRESE PUNTO DE INSERCION:”,P
Q=SIG (P)
SIG (P) =N
SIG (N) =Q
END IF
RETURN
ELIMINA:
IF INICIO=0 THEN
PRINT”LISA VACIA”
ELSE
IF SIG (1)=0 THEN
PRINT”NO SE PUEDE ELIMINAR EL NODO PRINCIPAL”
ELSE
INPUT”INGRESE EL PUNTO DE SUPRECION:”, P
Q=SIG (P)
SIG (P) =SIG (Q)
DATO$(Q) =” “
SIG (Q) =0
END IF
GOSUBAGRDISP
RETURN
ASIGNODO:
IF D=0 THEN
PRINT”YA NO QUEDA NODOS DISPONIBLES”
ELSE
N=D
D=SIG (D)
SIG (N) =0
END IF
RETURN
AGRDISP:
SIG (Q)=D
D=Q
RETURN
LEE:
CLS
PRINT DATO$(INICIO): I=INICIO
WHILE SIG (I)>=0
PRINT”DATO:” ;DATO$(I),
PRINT”POSICION FISSICA:”; I,
PRINT”SIGUIENTE:”; SIG(I)
I=SIG (I)
WEND
PRINT”PULSE UNA TECLA PARA CONTINUAR:”
T$=INPUT$(1)
RETURN

Listadoblemente ligadas
En esta estructura cada nodo cuenta con dos apuntadores uno que apunta al siguiente nodo y otro que apunta al nodo anterior, esto hace posible que se pueda recorrer la lista en ambos sentidos, tambien es posible la eliminación de un nodo en particular (el apuntado por ”P”). Ya que es posible obtener la dirección del nodo anterior.
Ejemplo de lista doblemente ligada
CLS
GOSUB...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS