You are on page 1of 11

Teora 7

Estructuras de datos ARREGLO

Clase 7

Programacin I

Vector: Agregar un elemento al final


Aspectos a considerar:
DONDE SE AGREGA?
dimL : cantidad lgica). de elementos en el vector (dimensin

dimF : dimensin fsica del vector (tamao especificado en la declaracin del vector)
espacio suficiente: Debe verificarse que dimL < dimF (dimensin lgica < dimensin fsica)

El elemento a agregar ocupa la posicin dimL+1.


Luego de la operacin la cantidad de elementos es dimL+1.

Clase 7

Programacin I

Vector: Agregar un elemento al final


Procedure AGREGAR (var a: arreglo; var dimL:integer; elemento: integer; var exito : boolean); Begin

{verificar espacio suficiente}


If (dimL < dimF) then begin dimL:= dimL + 1; {actualizar cantidad de elementos} a [dimL]:= elemento; exito := true end else exito := false; end;

Clase 7

Programacin I

Vector: Insertar un elemento


DNDE DE INSERTA?

Aspectos a considerar:

dimF : dimensin fsica del vector (tamao especificado en la declaracin


del vector).

dimL: cantidad de elementos en el vector. De ser posible la operacin,


la cantidad de elementos es dimL+1.

espacio suficiente: Debe verificarse que dimL < dimF


Cmo se puede insertar?
En una posicin determinada Manteniendo un orden interno determinado

Clase 7

Programacin I

Vector: Insertar un elemento


Supongamos que se quiere insertar el valor 26 en la posicin 2 de un vector de valores enteros

Pasos a seguir:
Pos =2

26

elemento

Validar la posicin a insertar Verificar espacio en el arreglo Abrir el arreglo (a partir de la dimensin lgica) Asignar el valor
Aumentar la dimensin lgica
a Dimensin lgica = 6

24 1

5 2

5 8 3

17 8 4

30 17 5

23 30 6

? 23 7

? 8

? dimF

Dimensin lgica = 7

Clase 7

Programacin I

Vector: Insertar un elemento en una posicin determinada


Procedure INSERTARPOS(var a: arreglo; var dimL: integer; elemento: integer; pos: integer; var exito: boolean ); Parmetros de la operacin: var i : integer; begin Verificar espacio y posicin vlida a: arreglo a trabajar if (dimF > dimL) and ((pos>=1) and (pos<= dimL)) dimL: cantidad de elementos then begin exito := true; Elemento: dato a insertar i := dimL; Pos: posicin donde insertar While ( i >= pos ) do begin Abrir el arreglo a [ i + 1 ] := a [ i ] ; exito: resultado operacin i := i - 1 ; end; Asignar el valor a [pos] := elemento;

end else exito := false; end;


Clase 7

{ Actualizar cantidad de elementos } dimL := dimL + 1; Aumentar la dimensin

Programacin I

Vector: Insertar un elemento


Supongamos que se quiere insertar un nombre a un vector ordenado de nombres, de manera que siga ordenado el arreglo

Pasos a seguir:
Verificar espacio en el arreglo Encontrar la posicin a insertar

elemento

Abrir el arreglo
Asignar el valor Aumentar la dimensin lgica
Nombres
Dimensin lgica = 5 Dimensin lgica = 6 A 1 B 2 D 3 D E 4

E M
5

M ? 6

? 7

? 8

? 100

Clase 7

Programacin I

Vector: Insertar un elemento de acuerdo a un orden


Const DimF = 1000; Type Nom= string [30]; arreglo= Array [1..DimF] of nom; Procedure INSERTARORD (var nombres: arreglo; var dimL: integer; elem : nom; var exito: boolean); var i : integer; begin if (dimF > dimL) Verificar espacio en el arreglo then begin exito := true; i:= 1

Parmetros de la operacin:
Nombres: arreglo a trabajar dimL: cantidad de elementos Elem: dato a insertar exito: resultado operacin

{ Buscar posicin a insertar}


while (i<=dimL) and (nombres[ i ] < elem) do i:= i + 1 Abrir el arreglo for j:= dimL downto i do nombres [ j +1 ] := nombres [ j ] ; Asignar el valor nombres [ i ] := elem; dimL := dimL + 1; Aumentar la dimensin end else exito := false; end;
Programacin I

Clase 7

Vector: Borrar un elemento


Aspectos a considerar:
dimL : cantidad de elementos en el vector. Luego de la operacin de borrar la cantidad de elementos es dimL-1. Pos : posicin del elemento del vector que se quiere borrar. Debe verificarse que pos es un valor vlido.
Qu elemento se puede borrar?

El que ocupa una posicin determinada

Un elemento determinado

Clase 7

Programacin I

Vector: Borrar un elemento en una posicin


Pasos a seguir:
Validar la posicin a borrar Guardar el contenido de esa posicin Desplazar elementos (a partir de la posicin siguiente) Procedure BORRARPOS (var a: arreglo; var dimL: integer; var elemento: integer; pos: posicion; var exito: boolean ); var j: integer; begin if (pos >=1 and pos <= dimL) Validar la posicin a borrar then begin exito := true

Disminuir la dimensin lgica Parmetros de la operacin:


Num: arreglo a trabajar dimL: cantidad de elementos Elemento: dato que ocupa la posicin a borrar Pos: posicin a borrar exito: resultado operacin
Clase 7

{Guarda el valor del elemento que se borra }


elemento := a[pos] ; Desplazar elementos for j:= pos to dimL-1 do a [ j ] := a [ j + 1 ] ; dimL := dimL - 1 ; Disminuir la dimensin lgica end else exito := false; End;

Programacin I

Vector: Borrar un elemento determinado


Const DimF = 1000; Type Nom= string [30]; arreglo= Array [1..DimF] of nom; Procedure BORRARELEM (var nombres: arreglo; var dimL: integer; elem : nom; var exito: boolean); var i , j: integer; begin i:= 1

{ Buscar la posicin del elemento a borrar}


Parmetros de la operacin:
Nombres: arreglo a trabajar dimL: cantidad de elementos Elem: dato a borrar exito: resultado operacin while (i<=dimL) and (nombres[ i ] <> elem) do i:= i + 1 if (i> dimL) then exito := false Desplazar elementos else begin for j:= i to dimL-1 do nombres [ j ] := nombres [ j +1] ; dimL := dimL -1; Disminuir la dimensin exito:= true; end end;

Clase 7

Programacin I

You might also like