Upload
jose-evanan
View
212
Download
0
Embed Size (px)
DESCRIPTION
Estructura de datso
Citation preview
UNIVERSIDAD NACIONAL
MAYOR DE SAN MARCOS Facultad de ingeniería de sistema e informática
Escuela académica profesional de ingeniería de sistemas
Asignatura:
Estructura de Datos
Tema:
Resolución Práctica N° 04
Docente:
Luzmila Pró Concepción
Ciclo:
2011-II
Alumna:
Tania Y. López Ramos 10200113
Grupo:
3
1. Realizar un algoritmo para realizar la adición de un nodo al final de la lista enlazada
ACCION Adiciona (Cab, Val) Inicio Q ← NUEVO NODO
LEER(Val) Q.Val ← Val Q.Sgte ← NULL Cab ← Q T ← Cab
Fin
2. Realizar un algoritmo para realizar la búsqueda por valor de elemento de la lista enlazada
ACCION BuscarNodo (Cab, Dato) Inicio
Q ← Cab Hallado ← V MIENTRAS(Q->Val <> Dato Y Hallado = V)
SI ( Q->Sgte <> NULL) Q ← Q->Sgte
SINO Hallado ← F
FIN_SI FIN_MIENTRAS SI (Hallado = F)
ESCRIBIR( “Dato no Existe”) SINO
ESCRIBIR(“Dato está en la Lista”) FIN_SI
Fin
3. Realizar un algoritmo para realizar la inserción de un nodo por posición en la lista enlazada
ACCION InsertarxPosicion (Cab, pos, P) /* Cab = cabecera, Pos = posición a insertar, P = nodo a insertar */ Inicio ENTERO i Q← Cab
SI Q = NULL ESCRIBIR(“Lista Vacia”) SINO
i← 1 MIENTRAS(i<pos Y Q <>NULL)
Q ← Q->Sgte i++
FIN_MIENTRAS P ←Q->Sgte
Q->Sgte←P->Sgte FIN_SI Fin
4. Realizar un algoritmo para realizar la inserción de un nodo por valor en la lista enlazada
ACCION InsertarxValor (Cab, Dato, Val) /* Cab = cabecera, Dato = dato a comparar, Val = dato a insertar */ Inicio
Q ← Cab Hallado ← V MIENTRAS(Q->Val <> Dato Y Hallado = V)
SI(Q->Sgte <> NULL) Q ← Q->Sgte
SINO Hallado ← F
FIN_SI FIN_MIENTRAS SI(Hallado = V)
T ← NUEVO NODO T->Val ← Val T->Sgte ← Q->Sgte Q->Sgte ← T
FIN_SI Fin
5. Realizar un algoritmo para realizar la eliminación de un nodo por posición en la lista enlazada
ACCION EliminarxPos(Cab, Pos, Dato) /*Cab = cabezera, Pos = posición a eliminar, Dato = nodo a eliminar */ Inicio
Q Cab SI Q = NULL ESCRIBIR(“Lista Vacia”) SINO
SI (Pos=1) P← Cab->Val Cab ← Cab->Val SINO i=1 MIENTRAS(Q <> NULL Y i<Pos-1) T ← Q Q←Q->Sgte i++ FIN_MIENTRAS SI(Q = NULL) ESCRIBIR(“Posicion no encontrada”) SINO Dato ←Q->Val // se recoge el valor eliminado T->Sgte ←Q->Sgte FIN_SI FIN_SI Fin
6. Realizar un algoritmo para realizar la eliminación de un nodo por valor en la lista
ACCION EliminarxValor (Cab, Dato) Inicio
Q ← Cab Hallado ← V MIENTRAS (Q->Val <>Dato Y Hallado = V)
SI (Q->Sgte <> NULL) T ← Q Q ← Q->Sgte
SINO Hallado ← F
FIN_SI FIN_MIENTRAS SI(Hallado = F)
ESCRIBIR(“No existe Dato”) SINO
SI(cab = Q)// Verifica si Dato es el primero cab ← Q->Sgte
SINO T->Sgte ← Q->Sgte
FIN_SI FIN_SI
Fin
7. Realizar un algoritmo para realizar el ordenamiento de una lista por orden creciente y por orden decreciente
Accion Ordenar_Lista(Cab, P) Inicio NODO *AUX ENTERO menor,op ESCRIBIR(“Creciente [0] Decreciente [1]") LEER(op) SI(NO (op)) PCAB; AUXCAB; HACER HACER SI(P->val>AUX->val) MenorP->val; P->val AUX->val; AUX->valmenor; FIN_SI AUXAUX->Sgte; MIENTRAS(AUX<>CAB); PP->SIG; MIENTRAS(P<>CAB); FIN_SI Fin
8. Realizar un algoritmo para crear una lista que contenga números pares
ACCION crearpares_LE (cab) ENTERO val
NODO *T SI (cab=Null) LEER (val) MIENTRAS ( val≠0) T←NODO (Disp) Lista_V(T)←val
Lista_P(T)←cab cab←T LEER (val)
FIN_MIENTRAS SINO ESCRIBIR (Lista ocupada) FIN_SI FIN_ACCION
9. Realizar un algoritmo para realizar la intercalación de dos listas enlazadas.
ACCION intercalar_LE (cab,cab1,cab2 )
ENTERO val ,i←0 NODO *A,*B,*C A←cab B←cab1 MIENTRAS (Lista_P(A)≠Null y Lista_P(B)≠Null )
val← Lista_V(A) C←NODO(Disp) Lista_V(C)←val Lista_P(C)←cab2 cab2←C val← Lista_V(B) C←NODO(Disp) Lista_V(C)←val Lista_P(C)←cab2 cab2←C A←Lista_P(A) B←Lista_P(B)
FIN_MIENTRAS MIENTRAS (Lista_P(A)≠Null )
val← Lista_V(A) C←NODO(Disp) Lista_V(C)←val Lista_P(C)←cab2 cab2←C A←Lista_P(A)
FIN_MIENTRAS MIENTRAS (Lista_P(B)≠Null )
val← Lista_V(B) C←NODO(Disp) Lista_V(C)←val Lista_P(C)←cab2 cab2←C B←Lista_P(B)
FIN_MIENTRAS FIN_ACCION
10. Realizar un algoritmo para realizar el proceso de salvar elementos de una lista en una fila.
ACCION salvar_LE (cab)
FILE *F ENTERO val NODO *T PRIMER (F) T←cab MIENTRAS(Lista_P(T)≠Null)
val← Lista_V(T) PONER(F,val) T←Lista_P(T)
FIN_MIENTRAS
MARCAR (F) FIN_ACCION
11. Realizar un algoritmo para realizar el proceso de recuperar una lista.
ACCION recuperar_LE (cab)
FILE *F ENTERO val NODO *T SI (cab≠Null)
PRIMER (F) TOMAR (F,val) MIENTRAS (NO_ULTIMO (F))
T←NODO (Disp) Lista_V(T)←val
Lista_P(T)←cab cab←T
TOMAR (F,val) FIN_MIENTRAS MARCAR (F)
FIN_SI FIN_ACCION
12. Realizar un algoritmo para realizar el proceso de pasar una lista enlazada a un
arreglo.
ACCION crear_arreglo (cab,X[max],dimx )
ENTERO val, i←0 NODO *T T←cab MIENTRAS(Lista_P(T)≠Null)
val← Lista_V(T) X[i]←val T←Lista_P(T) i←i+1
FIN_MIENTRAS dimx←i
FIN_ACCION
13. Realizar un algoritmo para realizar la intercalación en un arreglo con una lista enlazada
Accion Intercalar_Lista_Arreglo(Cab, A, dimA) /* Cab = cabecera, A = Arreglo, dimA = dimensión del arreglo */Inicio Q Cab I=1 MIENTRAS (Q <> NULL Y i<= N ) V1 ← Q->val V2 ← A[i] SI (V1=V2) V←V1 Q← Q->Sgte i←i+1 SINO SI(V1>V2) V←V1 Q←Q->Sgte SINO V←V2 i←i+1 FIN_SI
FIN_SI PONER(F,V)
FIN_MIENTRAS MIENTRAS(Q<>NULL) PONER(F,V) Q←Q->Sgte V←n->val FIN_MIENTRAS MIENTRAS(i<=N) FIN_MIENTRAS Fin
14. Realizar un algoritmo para realizar la inserción de un nodo en lista doblemente enlazada.
ACCION_Insercion (V, D) INICIO N = Nuevo Nodo N → Valor = V N → PS = D → PS (D → PS) → PA = N N → PA = D D → PS = N FIN_ACCION
15. Realizar un algoritmo para realizar la eliminación de un nodo en una lista doblemente enlazada.
ACCION_Eliminar(V,D) INICIO V = D → Valor (D → PA) → PS = D → PS (D → PS) → PA = D → PA FIN_ACCION
16. Realizar un algoritmo para realizar la inserción de un nodo en una lista circular.
ACCION Insertarinicio_LC ( cab , val ) NODO *Q,*T Q ←NODO (Disp) Lista_V(Q)←val SI (cab = NULL) cab← Q Lista_P(Q)←cab SINO Lista_P(Q)←cab cab←Q FIN_SIFIN_ACCION