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

COLEGIO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS DEL ESTADO DE BAJA CALIFORNIA PLANTEL ZONA RIO IMPLIMENTACION DE SISTEMAS APLICANDO DIFERENTES

TIPOS DE ESTRUCTIURAS DE DATOS

INTEGRANTES: PLATA GARCIA LUIS ROBERTO MUOS LARA USIEL JESUS FONSECA AYALA SERGIO BRYAN RODRIGUEZ GARCIA ERICK 22/09/11

Un arreglo est formado por un nmero fijo de elementos contguos de un mismo tipo. Al tipo se le llama tipo base del arreglo. Y los datos individuales se llaman elementos del arreglo. Un arreglo se caracterza por : 1. Almacenar los elementos del arreglo en posiciones de memoria contnua. 2. Tener un nico nombre de variable que representa a todos los elementos, y stos a su vez se diferencian por un ndice o subndice. 3. Acceso directo o aleatorio a los elementos individuales del arreglo.

ARREGLO: Un arreglo (array) es un medio de guardar un conjunto de datos de la mismo tipo. Se accede a cada elemento individual del arreglo mediante un nmero entero denominado ndice. En C# 0 (cero) es el ndice del primer elemento y n-1 es el ndice del ltimo elemento, siendo n, la dimensin del arreglo. Para definir un tipo estructurado arreglo, se debe especificar el tipo base y el nmero de elementos. SINTAXIS El formato para definir un tipo array es : Tipo de dato [tipo subindice] nombre array; Tipo de dato: Existe un elemento por cada valor del tipo subndice describe el tipo de cada elemento del vector; todos los elementos de un vector son del mismo tipo. Tipo subndice:puede ser de tipo ordinal: boolean o char, un tipo enumerado o un tipo subrango. DECLARAR Y CREAR UN ARREGLO (VECTOR) UNIDIMENSIONAL Para declarar un VECTOR se escribe Tipo de dato [ ] nombre del array;

Para crear una VECTOR de 4 nmeros enteros escribimos Nmeros = new int [4]; La declaracin y la creacin del vector se pueden hacer en una misma lnea. int[] numeros =new int[4]; INICIALIZAR EL ARREGLO Se pueden inicializar en un bucle for como resultado de alguna operacin for(int i=0; i<4; i++){ numeros[i]=i*i+4;} Los arreglos se pueden declarar, CREAR E INICIALIZAR EN UNA MISMA LNEA, del siguiente modo int*+ numeros=,2, 4, 15, 25-; String*+ nombres=,Juan, Jos, Miguel, Antonio-;

IMPRIMIR EL ARREGLO Para imprimir a los elementos del arreglo nombres se escribe for(int i=0; i<4; i++) { Console.Write Line?(nombres[i]);} LENGTH No necesitamos recordar el nmero de elementos del array, su miembro dato Length nos proporciona la dimensin del arreglo. Escribimos de forma equivalente for(int i=0; i<numeros.Length; i++) { numeros[i]=i*i+4; } Algunos lenguajes como Java verifican que el ndice no sea mayor o igual que la dimensin del array, lo que facilita mucho el trabajo al programador. En este tipo de lenguajes nos mandara alguna clase de excepcin o error, cuando se accede a un indice negativo o fuera de la longitud del vector.

Un arreglo unidimensional es un tipo de datos estructurado que est formado por una coleccin finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. Los datos que se guarden en los arreglos todos deben ser del mismo tipo. El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un ndice para cada elemento del arreglo que nos da su posicin relativa. Para implementar arreglos unidimensionales se debe reservar espacio en memoria. Los arreglos nos permiten hacer un conjunto de operaciones para manipular los datos guardados en ellos, estas operaciones son: ordenar, buscar, insertar, eliminar, modificar entre otras.

REPRESENTACION EN MEMORIA: Los arreglos guardan en memoria la cantidad de espacios que se le indican en la declaracin.

EJEMPLO 1

Ejemplo: sea el siguente arreglo unidimensional donde se va a guardar 5 datos de tipo entero (integer)

x : array[1..5] of integer En memoria el computador guarda 5 espacios: esto quiere decir en el arreglo X en la posicin 1 guarda 34, en el arreglo X en la posicin 2 guarda 22, asi hasta la ltima posicin del arreglo X posicion 5 guarda 72. X [1] 34 X [2] 22X [3]X [4] 63X [5] 72

Declaracion de los arreglos unidimensionales: Se declara el tipo del arreglo, con la palabra reservada TYPE, luego se declara la variable de tipo arreglo, esto se hace en el bloque de declaracion de variables palabra reservada VAR. Type nombre_arreglo= array[x..y]of tipo_dato; Ejemplos: salarios= array *1x+ of real; nombre_trabajador=array[1..x] of string; Nota: El tipo de dato del arreglo puede ser: integer,real, boolean, string etc. Variables tipo array Var sueldo:salarios; nombre:nombre_trabajador; Una vez declarados los arreglos procedemos a cargar informacin en ellos, para esto usamos estructuras repetitivas la mas recomendable por su facilidad es el for, una vez cargada la informacin se puede hacer cualquier operacin de calculo y por ltimo mostramos la informacin de los arreglos usando de igual manera la estructura repetitiva for. carga de un arreglo, la letra i es el indice o subindice del arreglo e indica la posicin del arreglo: for i:=1 to num do begin readln(notas[i]); end; Mostrar la informacin de un arreglo, la letra i es el indice o subindice del arreglo e indica la posicin del arreglo:: for i:=1 to num do begin

writeln(notas[i]:3:1); end; Se han hechos programas que suman una cantidad de nmeros usando dos variables, una para leer cada nmero y otra para acumular la suma. Este enfoque tiene la desventaja de que se pierden los valores de los sumandos. El uso de arreglos permite calcular la suma de los nmeros con una cantidad mnima de cdigo y a la vez conservar cada valor, como muestra el siguiente programa completo:

Program SumaN; Uses Crt; Const n = 5; Var nums: Array[1..n] Of Integer; s, i: Integer; Begin For i:=1 To n Do Begin Write('Escriba el nmero: '); ReadLn(nums[i]); s := s + nums[i]; End; WriteLn('La suma es: ', s); End. Ntese el uso de una constante para marcar el tamao del arreglo; dicha constante, tambin sirve para controlar el For. De este modo, slo se hace necesario cambiar un nmero para adecuar el programa a la escala apropiada

Ejercicios de arreglos unidimensionales:

* Dadas n cantidad de notas, calcular e imprimir el promedio de las notas y todas las notas que fueron mayor a la media calculada. PROGRAM calificaciones; USES CRT; type listacalificaciones=array[1..n]of real; VAR notas:listacalificaciones; media,suma:real; num,i:integer; BEGIN WRITELN('INTRODUZCA la cantidad de notas a procesar'); READLN(NUM); suma:=0; for i:=1 to num do begin readln(notas[i]); suma:=suma+notas[i]; end; media:=suma/num; writeln('la media es:' , media:2:2); writeln('la lista de calificaciones mayores a la media es:'); for i:=1 to num do begin if notas[i]>media then writeln(notas[i]:3:1); readln; end; END. (*Escribir un programa en pascal que rellene un array con 11 numeros, luego dividirlos entre 3 y mostralos por pantalla *) PROGRAM numeros; USES CRT; type

arreglonumeros=array[1..11]of real; VAR num:arreglonumeros; i:integer; numero:real; BEGIN for i:=1 to 11 do begin WRITELN('Introduzca el numero ' , i, ' a dividir'); readln(num[i]); numero:=num[i]/3; write('los numero resultantes de la division son:' ,numero:2:2); readln; end; end.

EJEMPLO 2 1. Disear un algoritmo que ingrese 30 notas aprobados y que me muestre la nota mayor y el promedio de todas (Nota>=10.5 y Nota<=20) Solucin : Inicio nota[30], s, may, p : real i : entero s0 para (i=1; i<=30; i++) repetir Ingresar nota [i] hasta (nota[i]>=10.5) y (nota[i]<=20) s s + nota*i+ si (i=1) entonces may nota*i+

sino si (nota[i]>may) entonces may nota*i+ fin _ si fin _ si fin _ para p s/30 mostrar "PROMEDIO TOTAL ES",p mostrar "LA NOTA MAYOR ES",may Fin

Arreglo de dos dimensiones. Son estructuras de datos que agrupan muchos datos del mismo tipo, en donde cada elemento se puede trabajar individualmente y se puede referenciar con un mismo nombre. Se usan para representar datos que pueden verse como una tabla con filas y columnas. <!--[if !supportLists]--> <!--[endif]-->Declaracin: Tipo dato nombre matriz [ndice fila] [ndice columna] <!--[if !supportLists]--> <!--[endif]-->Uso: Nombre matriz [subndice1] [subndice2] Int matriz [2][2] Char mapa [100][100] Int certamen [60][4] Declara una matriz de 3 filas por 4 columnas: Int matriz [3][4]; <!--[if !supportLists]--> <!--[endif]-->Declaracin e iniciacin Inti matriz [2][2]={1,2,3,4} 1 2

Para referenciar un elemento de la matriz, debe darse un nombre de la matriz y el ndice de la fila y de la columna que el elemento ocupa en dicha matriz. Es importante que los ndices de las matrices tanto de las filas como de las columnas empiezan en 0 y terminan en tamao fila-1 y tamao columna-1 respectivamente. Ejemplo Esto es usado como una base para la construccin de soluciones grficas. Entonces se considera una solucin analtica especfica para un problema bidimensional definido tica sobre una seccin vertical cruzada correspondiente a una n pendiente del cerro, identificando patrones de recarga y descarga y desarrollando una simple pero bastante

general panorama de flujo dinmico subterrneo y su relacin con la superficie hidrolgica.

Problema: Debemos de Hacer un programa que nos de la temperatura de cada hora, de todos los das y el promedio de la semana de diferentes regiones.

Este tipo de arreglo nos ayuda a resolver nuestro problema debido a que debemos utilizar ms de dos dimensiones, una de ellas serian las filas para los das de la semana y la otra, columnas para las horas del da pero ahora agregamos otra dimensin para indicar cada una de las regiones que queremos mostrar la temperatura. Lo que lo vuelve el programa ms complejo por lo que se debe de realizar mediante arreglos multidimensionales Si solo se necesitara obtener la temperatura promedio de la semana, se necesitara un arreglo unidimensional. Con el arreglo bidimensional podramos sacar el promedio de temperatura de la semana y de cada hora.

Una Cola es un contenedor de objetos que son insertados y eliminados de acuerdo con el principio de que el primero en entrar es el primero en salir (FIFO-First In First Out). Una Cola es un caso particular de lista en el cual los elementos se insertan en un extremo (el posterior o final) y se suprimen en el otro (el anterior o frente). Las Colas se conocen tambin Como Listas FIFO(first-infirst-out) olistas``primero en entrar, primero en salir''.

Un ejemplo de cola es la Cola de impresin en el sistema operativo Windows. Cada usuario de una red de Windows coloca sus trabajos de impresin y el sistema lo imprime en el mismo orden en que fueron insertados en la cola de impresin

Las colas se utilizan en sistemas informticos, transporte y operaciones de investigacin (entre otras), donde los objetivos, personas o eventos son tomadas como datos que se almacenan y se guardan mediante colas para su posterior procesamiento.

Especificacin Formal Tipo: Cola(Elemento) Sintaxis: crea->Cola inserta(Cola, Elemento)->Cola vaca(Cola)->booleano primero(Cola)->Elemento suprime(Cola)->Cola Semntica: vacia(crea) => cierto vacia(inserta(C,E))=>falso primero(crea)=>error primero(inserta(C,E))=>sivacia->E|primero(C) suprime(crea)=>error suprime(inserta(C,E))=>sivacia(C)->crea|inserta(suprime(C),E

AADIR, ENTRAR, PUSH): SE AADE UN ELEMENTO

La pila debe pensarse como una resma de hojas sobre un escritorio, con slo dos posibles operaciones bsicas: apilar (agregar o push) y desapilar (sacar o pop). Se agregan hojas una sobre la otra, y se retiran desde arriba hacia abajo. Esto significa que en todo momento, slo se puede acceder directamente al ltimo elemento agregado (el que est ms arriba en la pila, que es llamado TOS). Pila (informtica).Una pila (stack en ingls) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del ingls Last In First Out, ltimo en entrar, primero en salir) que permite almacenar y recuperar datos. Se aplica en multitud de ocasiones en informtica debido a su simplicidad y ordenacin implcita en la propia estructura. Representacin grfica de una pila Para el manejo de los datos se cuenta con dos operaciones bsicas: apilar (push), que coloca un objeto en la pila, y su operacin inversa, retirar (o desapilar, pop), que retira el ltimo elemento apilado.

Ejemplo de una pila LIFO en C

Vamos a programar una estructura de datos sencilla, una pila como la que se usa el lenguaje C, en este programa hacemos uso de punteros.

/* Programa que simula un LIFO*/ #include #include

#define tam 10 //nmero de elementos de la pila //Mtodos o funciones que vamos a usar. int menu(void); void ver_pila(void); void poner(int numero); int quitar(void); //Variables globales int *cima; int *actual; int pila[tam]; int error = 0; int main(){ int opcion; int salir = 0; int i; int numero = 0; cima = pila; actual = pila; for(i=0 ; i{ pila[i] = numero;} //Bucle infinito do{ opcion = menu();

switch(opcion){ case 1: ver_pila(); break; case 2://Introducir elemento en la pila putchar('\n'); printf("Numero a introducir: "); scanf("%i", &numero); poner(numero); break; case 3: //Obtenemos el elemento de la cima. numero = quitar(); if(error == 0) { printf("\nNumero en cim de la pila:%i\n", numero); } break; case 4: salir = 1; system("cls"); exit(0); break; } }while(salir == 0); return 0;} int menu(void){ int opcion; int correcto = 0; do{ printf("Elija una de las siguientes opciones\n");

printf("1. Mostrar pila\n"); printf("2. Aadir elemento a pila\n"); printf("3. Extraer cima de pila\n"); printf("4. Salir del programa\n"); scanf("%i",&opcion);

switch(opcion){ case 1: case 2: case 3: case 4: correcto = 1; break; default: printf("Opcion incorrecta, introduzca un valida\n"); break; } }while(correcto == 0); return opcion; }

void ver_pila(void) { int i; system("cls"); printf("Estado de la pila desde la cima hasta la base:\n"); for(i = tam; i>=0; i--) printf("\t\t\tPila[%i]:%i\n",i,pila[i]);

void poner(const int numero) { if(actual == (cima + tam)) printf("\nPila llena, saque algun elemento\n"); else{ *actual = numero; actual++; system("cls"); printf("\nElemento introducido\n"); }} int quitar(void){ int numero; actual--; if(++actual == cima){ system("cls"); printf("Pila vaca, introduzca algun elemento\n\n"); error = 1;} else{ actual--; error = 0; numero = *actual; *actual = 0;} return numero;}

Se define un rbol binario como un conjunto finito de elementos (nodos) que bien esta vaco o esta formado por una raz con dos arboles binarios disjuntos, es decir, dos descendientes directos llamados subarbol izquierdo y subarbol derecho. Los rboles binarios (tambin llamados de grado 2 )tienen una especial importancia. Las aplicaciones de los arboles binarios son muy variadas ya que se les puede utilizar para representar una estructura en la cual es posible tomar decisiones con dos opciones en distintos puntos. Arbol binario de bsqueda. Los rboles binarios se utilizan frecuentemente para representar conjuntos de datos cuyos elementos se identifican por una clave nica. Si el rbol est organizado de tal manera que la clave de cada nodo es mayor que todas las claves su subarbol izquierdo, y menor que todas las claves del subarbol derecho se dice que este rbol es un rbol binario de bsqueda.

Ejemplo: Operaciones bsicas

Una tarea muy comn a realizar con un rbol es ejecutar una determinada operacin con cada uno de los elementos del rbol. Esta operacin se considera entonces como un parmetro de una tarea ms general que es la visita de todos los nodos o, como se denomina usualmente, del recorrido del rbol. Si se considera la tarea como un proceso secuencial, entonces los nodos individuales se visitan en un orden especfico, y pueden considerarse como organizados segn una estructura lineal. De hecho, se simplifica considerablemente la descripcin de muchos algoritmos si puede hablarse del proceso del siguiente elemento en el rbol, segn un cierto orden subyacente. Hay dos formas bsicas de recorrer un rbol: El recorrido en amplitud y el recorrido en profundidad. Recorrido de un Arbol Binario Recorrido en amplitud Es aquel recorrido que recorre el rbol por niveles, en el ltimo ejemplo sera: 12 - 8,17 - 5,9,15 Recorrido en profundidad Recorre el rbol por subrboles. Hay tres Preorden, orden central y postorden. Hay tres formas: en inorden, preorden y postorden. Cada una de ellas tiene una secuencia distinta para analizar el rbol como se puede ver a continuacin: 1. Inorden

Recorrer el subarbol izquierdo en inorden. Examinar la raz. Recorrer el subarbol derecho en inorden.

Preorden

Examinar la raz. Recorrer el subarbol izquierdo en preorden. recorrer el subarbol derecho en preorden.

Postorden

Recorrer el subarbol izquierdo en postorden. Recorrer el subarbol derecho en postorden. Examinar la raz.

A continuacin se muestra un ejemplo de los diferentes recorridos en un rbol binario. Inorden: GDBHEIACJKF Preorden: ABDGEHICFJK Postorden: GDHIEBKJFCA Clasificacin de Arboles Binarios Existen cuatro tipos de rbol binario:.

Arbol Binario Distinto. Arbol Binario Similares. Arbol Binario Equivalentes. Arbol Binario Completos.

A continuacin se har una breve descripcin de los diferentes tipos de rbol binario as como un ejemplo de cada uno de ellos. Arbol Binario Distinto Se dice que dos rboles binarios son distintos cuando sus estructuras son diferentes. Ejemplo: Arbol Binario Similar Dos arboles binarios son similares cuando sus estructuras son idnticas, pero la informacin que contienen sus nodos es diferente. Ejemplo: Arbol Binario Equivalente Son aquellos arboles que son similares y que adems los nodos contienen la misma informacin. Ejemplo:

Arbol Binario Completo Son aquellos arboles en los que todos sus nodos excepto los del ultimo nivel, tiene dos hijos; el subarbol izquierdo y el subarbol derecho

Los arboles representan las estructuras no lineales y dinmicas de datos ms importantes en computacin. Dinmicas porque las estructuras de rbol pueden cambiar durante la ejecucin de un programa. No lineales, puesto que a cada elemento del rbol pueden seguirle varios elementos. Los arboles pueden ser construidos con estructuras estticas y dinmicas. Las estticas son arreglos, registros y conjuntos, mientras que las dinmicas estn representadas por listas. La definicin de rbol es la siguiente: es una estructura jerrquica aplicada sobre una coleccin de elementos u objetos llamados nodos; uno de los cuales es conocido como raz. Adems se crea una relacin o parentesco entre los nodos dando lugar a trminos como padre, hijo, hermano, antecesor, sucesor, ancestro, etc.. Formalmente se define un rbol de tipo T como una estructura homognea que es la concatenacin de un elemento de tipo T junto con un nmero finito de arboles disjuntos, llamados subarboles. Una forma particular de rbol puede ser la estructura vaca. Ejemplo: La figura siguiente representa a un rbol general.

Se utiliza la recursin para definir un rbol porque representa la forma ms apropiada y porque adems es una caracterstica inherente de los mismos. Los arboles tienen una gran variedad de aplicaciones. Por ejemplo, se pueden utilizar para representar frmulas matemticas, para organizar adecuadamente la informacin, para construir un rbol genealgico, para el anlisis de circuitos elctricos y para numerar los captulos y secciones de un libro.

Int matriz [2][2]={1,2,3,4} 1 2

Para referenciar un elemento de la matriz, debe darse un nombre de la matriz y el ndice de la fila y de la columna que el elemento ocupa en dicha matriz. Es importante que los ndices de las matrices tanto de las filas como de las columnas empiezan en 0 y terminan en tamao fila-1 y tamao columna-1 respectivamente.

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