9
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

ED 4

Embed Size (px)

DESCRIPTION

Estructura de datso

Citation preview

Page 1: ED 4

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

Page 2: ED 4

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

Page 3: ED 4

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

Page 4: ED 4

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

Page 5: ED 4

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

Page 6: ED 4

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

Page 7: ED 4

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

Page 8: ED 4

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

Page 9: ED 4

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