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

LISTAS

Para todos los algoritmos se cuenta con la siguiente estructura de datos

Const MAX = 100


V = arreglo [1..MAX] de enteros

INSERTAR EN UNA LISTA ORDENADA.


Algoritmo que inserta un valor Y en la lista V con N elementos, que se encuentra desordenada.
Insertadesordenado(V,N,Y)
Inicio
Si N< MAX entonces /* se verifica que exista espacio en la lista V */
N  N+1
V[N]  Y
Sino
Imprimir “No se puede insertar el elemento Y, Lista llena”
Fin si
Fin

ELIMINAR EN UNA LISTA DESORDENADA


Algoritmo que elimina un elemento X de una lista V de N posiciones desordenada.
Eliminadesordenado(V,N,X)
Inicio
Declarar i,k: entero
Band: booleano
Si N >= 1 entonces /* se verifica que la lista V tenga elementos */
i=1
Band = Falso
Mientras que (i<=N) y (band = Falso) haga
Si v[i] = X entonces
Band  Verdadero
N  N-1
Para k = i hasta N haga
V[k]  V[k+1]
Fin Para
Sino
i  i +1
Fin si
Fin MQ
Si band = Falso entonces
Imprimir(“El elemento X no existe en la lista”)
Fin si
sino
Imprimir(“La lista está vacía”)
Fin si.
Fin

MODIFICAR EN UNA LISTA DESORDENADA


Algoritmo que modifica un elemento X de una lista V de N posiciones desordenada y lo cambia por un
elemento Y.
Modificardesordenado(V, N, X,Y)
Inicio
Declarar i: entero
Band: Booleano
Si N >= 1 entonces /* Verificar que la lista no esté vacía */
i1
Band  Falso
Mientras Que (i<=N) y (Band = Falso) haga
Si V[i] = X entonces
V[i]  Y
Band  Verdadero
Sino
i  i +1
Fin si
Fin MQ
Si Band = Falso entonces
Imprimir(“El elemento X no está en la lista”)
Fin si
Sino
Imprimir(“La lista está vacía”)
Fin si
Fin

INSERTAR EN UNA LISTA ORDENADA


Para insertar en una lista ordenada, es necesario buscar la posición de esta donde se insertará el
elemento, para eso se presenta la función auxiliar busca.

BUSCAR LA POSICIÓN DE UN ELEMENTO EN UNA LISTA ORDENADA


Algoritmo busca un elemento X en un arreglo ordenado V de N posiciones. Devuelve la posición de X
en POS. Si POS tiene valor positivo (>0) el elemento existe en la lista, si tiene valor negativo, (<0) el
elemento no se encuentra en la lista.
Busca(V,N,X): entero
Inicio
Declarar i: entero
Mientras Que (i<=N) y (V[i]<X) haga
i  i+1
Fin MQ
Si (i>N) o (V[i]>X)
POS  -i
Sino
POS  i
Fin si
Devolver POS
Fin
A continuación se escribe el algoritmo para insertar en una lista ordenada, usando la función busca para
hallar la posición del elemento

Insertar un elemento Y en una lista ordenada V de N posiciones


Insertaordenado(V,N,Y)
Inicio
Declarar i, Pos: entero
Si N< MAX entonces
Pos = Busca(V,N,Y)
Si Pos>0 entonces /* El elemento ya pertenece a la lista */
Imprimir(“El elemento ya Existe”)
Sino
NN+1
PosPos*(-1)
Para i1 hasta Pos+1 haga
V[i]V[i-1]
Fin para
V[Pos]Y
Fin si
Sino
Imprimir(“No hay espacio en la lista”)
Fin si
Fin

ELIMINAR EN UNA LISTA ORDENADA


Algoritmo que elimina un elemento X de una lista ordenada V de N posiciones.
Eliminaordenado(V,N,X)
Inicio
Declarar i, Pos: entero
Si N>0 entonces
Pos = Busca(V,N,X)
Si Pos<0 entonces /* El elemento no existe en la lista */
Imprimir(“El elemento no Existe”)
Sino
NN-1
Para iPos hasta N haga
V[i]V[i+1]
Fin para
Fin si
Sino
Imprimir(“La lista está vacía”)
Fin si
Fin
PILAS
Para los próximos algoritmos se cuenta con la siguiente estructura de datos

Const MAX = 100


Pila = arreglo[1..MAX] de enteros

PONER EN UNA PILA


Algoritmo que inserta el elemento DATO en la pila. TOPE marca el tope de elementos, MAX posee el
tamaño de la pila
Push(PILA, MAX, TOPE,DATO)
Inicio
Si (TOPE < MAX) entonces /* verifica que haya espacio */
TOPE  TOPE +1
PILA[TOPE]  DATO
Sino
Imprimir(“Subdesbordamiento”)
Fin si
Fin

QUITAR DE UNA PILA


Algoritmo que saca el ùltimo elemento de una PILA, y lo guarda en Dato, TOPE guarda el tope de
elementos de la pila.
Pop(PILA, TOPE, DATO)
Inicio
Si (TOPE > 0) entonces /* verifica que la pila no este vacia */
DATO  PILA[TOPE]
TOPE  TOPE -1
Sino
Imprimir(“Subdesbordamiento”)
Fin si
Fin

CONVERSION POSTFIJA
Traducir una expresión infija EI a postfija EPOS, utilizando una pila.
Inapos(EI, EPOS)
Inicio
Declarar Tope: entero
Declarar símbolo: caracter
Tope  0
Mientras (EI<>vacio) haga
Símbolo  izquierda(EI,1,1) /* función que devuelve un número de caracteres a la
izquierda de una cadena */
EI  derecha(EI,2,largo(EI)) /* derecha devuelve un numero de caracteres a la derecha de
una cadena, largo, devuelve la longitud de una cadena */
Selecciones símbolo
Caso “(“: Tope  Tope +1
Pila[Tope]  simbolo
Caso “)“: Mientras Que (Pila[Tope] <> “)” ) haga
Concatenar(EPOS, Pila[Tope]) /* Concatenar dos cadenas */
Tope  Tope -1
Fin MQ
/* Se quita el paréntesis izquierdo de la pila y no se agrega a EPOS */
Pila[Tope]  “”
Tope  Tope – 1
Caso “A”,”B”,”C”,…,”Y”,”Z”: /* El símbolo es un operando */
Concatenar (EPOS, símbolo)
Caso “^”, “*”,”/”,”+”,”-“: /* el símbolo es un operador */
Mientras Que (Tope > 0 ) y (Prioridad(símbolo) <= prioridad(Pila(Tope)) haga
Concatenar(EPOS, Pila[Tope])
Tope  Tope -1
Fin MQ
Tope  Tope +1
Pila[Tope]  símbolo
Fin Seleccione
Fin MQ
Mientras Que (Tope>0) haga
Concatenar(EPOS,Pila[Tope])
Tope  Tope -1
Fin MQ
Imprimir EPOS
Fin

COLAS
Para los próximos algoritmos se cuenta con la siguiente estructura de datos

Const MAX = 100


COLA = arreglo[1..MAX] de enteros

INSERTAR EN UNA COLA


Algoritmo que inserta el elemento DATO al final de la COLA. FRENTE y FINAL marcan el inicio y
fin de la cola. MAX es el tamaño de la COLA
Insertacola(COLA, MAX, FRENTE, FINAL,DATO)
Inicio
Si (FINAL < MAX) entonces /* Verificar espacio libre */
FINAL  FINAL +1
COLA[FINAL]  DATO
Si (FINAL = 1) ENTONCES
FRENTE  1
Fin si
Sino
Imprimir(“Desbordamiento”)
Fin si
Fin

ELIMINAR EN UNA COLA


Algoritmo que elimina el primar elemento de la cola y lo almacena en DATO
Eliminacola(COLA, FRENTE,FINAL,DATO)
Inicio
Si (FRENTE <> 0) entonces /* verificar que la cola no este vacia */
DATO  COLA[FRENTE]
Si (FRENTE = FINAL) entonces /* hay un solo elemento */
FRENTE  0
FINAL  0
Sino
FRENTE  FRENTE +1
Fin si
Sino
Imprimir(“Subdesbordamiento”)
Fin si
Fin

MANEJO DE COLAS CIRCULARES


INSERTAR EN UNA COLA CIRCULAR
Algoritmo que sirve para insertar un dato DATO en una cola Circular COLACIR con MAX elementos
y los marcadores de FRENTE y FINAL.
Insertacircular(COLACIR, MAX, FRENTE, FINAL, DATO)
Inicio
Si ((FINAL = MAX) Y (FRENTE = 1)) o ((FINAL+1) = FRENTE) entonces
Imprimir (“Desbordamiento”) /*Cola Llena*/
Sino
Si (FINAL = MAX) entonces
FINAL  1
Sino
FINAL  FINAL +1
Fin si
COLACIR[FINAL]  DATO
Si (FRENTE = 0) entonces
FRENTE  1
Fin si
Fin si
Fin

ELIMINAR EN UNA COLA CIRCULAR


Algoritmo que elimina el primer elemento de una cola circular COLACIR y lo almacena en DATO.
FRENTE Y FINAL marcan el inicio y fin de la cola. La cola tiene un tamaño de MAX elementos.
Elminacircular(COLACIR, MAX, FRENTE, FINAL, DATO)
Inicio
Si (FRENTE = 0) entonces /* verifica si la cola esta vacia */
Imprimir(“Subdesbordamiento”)
Sino
DATO  COLACIR[FRENTE]
Si (FRENTE = FINAL) entonces /* solo hay un elemento */
FRENTE  0
FINAL  0
Sino
Si (FRENTE = MAX) entonces
FRENTE  1
Sino
FRENTE  FRENTE +1
Fin si
Fin si
Fin si
Fin

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