Revista sistemas operativos oscar perez

Page 1

REVISTA

ERA DIGITAL ESPECIAL

ESTRUCTURA DE DATOS

CLASIFICSCION

OPERACIONES

INTERNAS Y EXTERNAS

ESTATICAS LINEALES

DINAMICAS NO LINEALES

1


SUMARIO PATROCINANTE OFICIAL

ESTRUCTURA DE DATOS

ARRAYS

CLASIFICACIÓN

Y MATRICES

ESTRUCTURAS DE DATOS

LISTAS ENLAZADAS

DINAMICAS

ESTRUCTURAS

ESTRUCTURAS

DE DATOS

DE DATOS

NO LINEALES

EXTERNAS

BASE DE DATOS 2


E

n un lenguaje de programación, un tipo de dato está definido por el conjunto de valores que representa y por el conjunto de operaciones que se pueden realizar con dicho tipo de dato. Por ejemplo, el tipo de dato entero en Java puede representar números en el rango de -2^31 a 2^31-1 y cuenta con operaciones como suma, resta, multiplicación, división, etc.

memoria. Debido a esto, una variable de un tipo de dato simple hace referencia a un único valor a la vez. Ejemplo de estos tipos de datos son los enteros, reales, caracteres y booleanos.

Así mismo, los datos estructurados se caracterizan porque su definición está compuesta de otros tipos de datos simples, así como de otros datos estructurados. En este caso, un nombre (identificador de la variable estructurada) hace Por otro lado, podemos decir referencia no solo a una casique en la solución de un pro- lla de memoria, sino a un grublema a ser procesado por un po de casillas. computador podemos encontrar dos grandes tipos de datos: datos simples y datos es- En programación, el término tructurados. Los datos simples estructura de datos se utiliza son aquellos que, al ser repre- para referirse a una forma de sentados por el computador, organizar un conjunto de datos ocupan solo una casilla de que se relacionan entre sí, sean estos simples o estructu-

Sobre una estructura de datos se puede efectuar diferentes tipos de operaciones, entre las más importantes están: Inserción: Es aquella mediante la cual se incluye un nuevo elemento en la estructura. Modificación: Permite variar parcial o totalmente el contenido de la información de los elementos de la estructura. Eliminación: Como su nombre lo indica, es la que permite suprimir elementos de la estructura.

Navegar por la estructura: Esta es una operación básica que garantiza que se puede recuperar información almacenada. Búsqueda: Permite determinar si un elemento se encuentra o no en la estructura. Consulta de la información: Permite obtener información de uno o más elementos de la estructura.

rados, con el objetivo de facilitar su manipulación y de operarlo como un todo. Por otro lado, tenemos el término Tipo de Dato Abstracto, o TDA, que es muy comúnmente utilizado como equivalente al término estructura de datos para referirse justamente a un tipo de dato estructurado que representa un concepto a través de la definición de sus características (datos que lo conforman) y de sus operaciones (algoritmos que manipulan los datos que lo conforman)

Copia parcial o total: Mediante esta operación se puede obtener total o parcialmente una estructura con características similares a la original. Prueba: Permite determinar si uno o varios elementos cumplen determinadas condiciones. Verificar si es vacía: Permite determinar si existen o no elementos sobre la estructura. 3


4


Una clasificación de estructuras de datos es según dónde residan: Internas y externas. Si una estructura de datos reside en la memoria central del computador se denomina estructura de datos interna. Recíprocamente, si reside en un soporte externo, se denomina estructura de datos externa. Las estructuras de datos internas pueden ser de dos tipos: Estructuras de Datos Estáticas.  Estructuras de Datos Dinámicas. 

ESTRUCTURA DE DATOS ESTATICA Tienen un número fijo de elementos que queda determinado desde la declaración de la estructura en el comienzo del programa. Ejemplo los arreglos. Las estructuras de datos estáticas, presentan dos inconvenientes: 1. La reorganización de sus ele-

mentos, si ésta implica mucho movimiento puede ser muy costosa. Ejemplo: insertar un dato en un arreglo ordenado. 2. Son estructuras de datos estáticas, es decir, el tamaño ocupado en memoria es fijo, el arreglo podría llenarse y si se crea un arreglo 5


6


U

n arreglo es una estructura de datos, o más técnicamente, un espacio de memoria que permite almacenar una colección de elementos, todos del mismo tipo. Conviene imaginar un arreglo como una secuencia contigua de celdas (espacios de memoria), o casillas, en cada una de las cuales se puede guardar un elemento de la colección. Además, es usual dibujarlo como lo ilustra la figura siguiente: 0 1 2 3 4 5 6 7 8 9 Esta figura representa un arreglo de nueve casillas cada una de las cuales se puede utilizar para guardar un dato. La dimensión o tamaño de un arreglo es el número de casillas que lo conforman. Debe ser claro, entonces, que la figura corresponde a un arreglo de dimensión 9.

ARRAYS

Cada una de las casillas de un arreglo tiene asociado un número que la identifica de manera única. A este número se le llama índice o dirección. En la figura anterior, debajo de cada casilla, aparece su índice. En lenguajes como C, C++ y java, la primera casilla del arreglo tiene índice 0, la segunda tiene índice 1, la tercera índice 2, y así sucesivamente. Es muy importante tener presente que si el arreglo es de dimensión N, la última casilla tiene índice N-1.

MATRICES

U

na matriz es una estructura de datos, o más técnicamente, un espacio de memoria que permite almacenar una colección de elementos, todos del mismo tipo. La diferencia con los arreglos está en que, en las matrices, los elementos no están organizados linealmente sino que su organización es bidimensional, es decir, en filas y columnas. Conviene imaginar una matriz como una organización de celdas de memoria, o casillas, en cada una de las cuales se puede guardar un elemento de la colección. Además, es usual dibujarla como lo ilustra la figura siguiente: 13 0 1 2 3 4 5 0 1 2 3 Esta figura representa un matriz de cuatro filas (numeradas verticalmente de 0 a 3) y seis columnas (numeradas horizontalmente de 0 a 5). En cada una de las 24 celdas o casillas se puede guardar un dato. La dimensión o tamaño de una matriz es el número filas por el número de columnas. Debe ser claro entonces que la figura anterior es la gráfica de una matriz de dimensión 4x6. La numeración de las filas y las columnas determina que cada una de las casillas de una matriz tiene asociados dos números que la identifican de manera única. A estos números se les llama índice de fila e índice de columna, respectivamente. En el seudolenguaje, y también en C y C++, las filas y las columnas se numeran desde 0.

7


L

as estructuras de datos dinámicas nos permiten lograr un importante objetivo de la programación orientada a objetos: la reutilización de objetos. Al contrario de un arreglo, que contiene espacio para almacenar un número fijo de elementos, una estructura dinámica de datos se amplía y contrae durante la ejecución del programa. A su vez, este tipo de estructuras se pueden dividir en dos grandes grupos según la forma en la cual se ordenan sus elementos.  

Lineales No lineales

ESTRUCTURAS DE DATOS LINEALES

En este tipo de estructuras los elementos se encuentran ubicados secuencialmente. Al ser dinámica, su composición varía a lo largo de la ejecución del programa que lo utiliza a través de operaciones de inserción y elimi-

nación. Dependiendo del tipo de acceso a la secuencia, haremos la siguiente distinción:  Listas: podemos acceder (insertar y eliminar) por cualquier lado.  Pilas: sólo tienen un único pun-

to de acceso fijo a través del cual se añaden, se eliminan o se consultan elementos.  Colas: tienen dos puntos de acceso, uno para añadir y el otro para consultar o eliminar elementos.

PILAS Una pila (stack en inglés) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Se aplica en multitud de ocasiones en informática debido a su simplicidad y ordenación implícita en la propia estructura. 8


9


Colas FIFO Son aquellas que solo tiene 2 operaciones, Push (Inserci贸n) y Pop (Eliminaci贸n). Push solo se puede efectuar por un extremo llamado Frente y Pop por el extremo Llamado Final. Sin Embargo se le pueden aplicar todas las operaci贸n al igual que a las listas.

10


L

a lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace apunta al siguiente nodo en la lista, o al valor NULL o a la lista vacía, si es el último nodo. Una lista enlazada simple contiene dos valores: el valor actual del nodo y un enlace al siguiente nodo

Un tipo de lista enlazada más sofisticado es la lista doblemente enlazada o lista enlazadas de dos vías. Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor NULL o a la lista vacía si es el primer nodo; y otro que apunta al siguiente nodo siguiente, o apunta al valor NULL o a la lista vacía si es el último nodo. Una lista doblemente enlazada contiene tres valo- En algún lenguaje de muy bajo nivel, ofrece una res: el valor, el link al nodo siguiente, y el link al vía para implementar listas doblemente enlazadas, usando una sola palabra para ambos enlaces, anterior aunque el uso de esta técnica no se suele utilizar. En una lista enlazada circular, el primer y el último nodo están unidos juntos. Esto se puede hacer tanto para listas enlazadas simples como para las doblemente enlazadas. Para recorrer un lista enlazada circular podemos empezar por cualquier nodo y seguir la lista en cualquier dirección hasta que se regrese hasta el nodo original. Desde otro punto de vista, las listas enlazadas circulares pueden ser vistas como listas sin comienzo ni fin. Este tipo de listas es el más usado para dirigir buffers para "ingerir" datos, y para visitar todos los nodos de una lista a partir de uno dado. Una lista enlazada circular que contiene tres valores enteros 11


12


LISTA ENLAZADA CIRCULAR SIMPLE Cada nodo tiene un enlace, similar al de las listas enlazadas simples, excepto que el siguiente nodo del último apunta al primero. Como en una lista enlazada simple, los nuevos nodos pueden ser solo eficientemente insertados después de uno que ya tengamos referenciado. Por esta razón, es usual

quedarse con una referencia solamente al último elemento en una lista enlazada circular simple, esto nos permite rápidas inserciones al principio, y también permite accesos al primer nodo desde el puntero del último nodo.

Lista Enlazada Doblemente Circular

E

n una lista enlazada doblemente circular, cada nodo tiene dos enlaces, similares a los de la lista doblemente enlazada, excepto que el enlace anterior del primer nodo apunta al último y el enlace siguiente del último nodo, apunta al primero. Como en una lista doblemente enlazada, las inserciones y eliminaciones pueden ser hechas desde cualquier punto con acceso a algún nodo cercano. Aunque estructuralmente una lista circular doblemente enlazada no tiene ni principio ni fin, un puntero de acceso externo puede establecer el nodo apuntado que está en la cabeza o al nodo cola, y así mantener el orden tan bien como en una lista doblemente enlazada.

13


D

entro de las estructuras de datos no lineales tenemos los árboles y grafos.

Estructuras

Este tipo de estructuras los datos no se encuentran ubicados secuencialmente.

de Datos

Permiten resolver problemas computacionales complejos.

No Lineales

Un árbol es una estructura de datos homogénea, dinámica y no lineal, en la que cada nodo (elemento) puede tener varios nodos posteriores, pero sólo puede tener un nodo anterior. Un árbol es dinámico porque su estructura puede cambiar durante la ejecución de un programa. Y no lineal, ya que cada nodo del árbol puede contener varios nodos que dependan de él.

La estructura de un árbol se forma de nodos y arcos (línea que une dos nodos), el primero de los nodos del árbol recibe el nombre de raíz, del cual se desprenden los

A

nodos interiores y de éstos los nodos llamados hoja, que son los nodos que se encuentran al final del árbol; todos ellos en conjunto forman un árbol.

demás de comprender el concepto y la estructura de un árbol, debemos tomar en cuenta otros conceptos básicos que pueden ser útiles en el momento de construir o programar un árbol, estos conceptos los clasificaremos en tres rubros:   

Relación con otros nodos Posición dentro del árbol Tamaño del árbol

En relación con otros nodos: Padre, es el nodo del cual se derivan otros nodos. Hijo, es el nodo que depende de otro. Hermano, es el nodo que se encuentra al lado del nodo hijo y que dependen del mismo nodo padre. 14


E

n cuanto a la posición dentro del árbol:

Raíz, es el primero de los nodos y el único que no contiene un padre. Hoja, es el nodo que se encuentra al final del árbol. Interior, es un nodo que no es raíz ni hijo y se encuentre ellos. En relación a su tamaño:

Orden, es el número potencial de nodos hijos que tiene un nodo padre (orden 2). Grado, es el número máximo de hijos que tiene un nodo (grado 2). Nivel, es el número de arcos que deben ser recorridos para llegar a un determinado nodo más uno (nivel 3). Altura, es el número de niveles que deben pasar para llegar al final del árbol o de la ramificación

(altura 3). Peso, es el número de nodos del árbol sin contar la raíz (peso 6). Camino, es la serie de nodos que tienes que pasar para llegar hasta un nodo. Longitud de camino, es el número de arcos más uno que debe cruzar para llegar a un nodo. Rama, es el camino que se forma desde el nodo raíz hasta un nodo hoja

Esta definición da lugar a una representación gráfica, en donde cada vértice es un punto del plano, y cada arista es una línea que une a sus dos vértices.

15


PATROCINADO POR

16


ESTRUCTURAS DE DATOS EXTERNAS ARCHIVOS

E

s el conjunto de registros homogéneos referidos a objetos de la misma naturaleza o del mismo tipo, almacenados en un soporte externo, que presenta entre sí una relación lógica y que pueden ser consultados individualmente de

forma iterativa o sistemática.

contener datos, estos están orTomando el ejemplo anterior, ganizados de forma tal que puepodemos decir que habrá un re- den ser recuperados fácilmente, borrados, actualizados, etc.gistro por alumno, y habrá tantos registros como alumnos haya. Al hablar de archivo es impresEste conjunto de registros de cindible que cada uno de ellos alumnos formará un archivo. tenga un nombre para poder Un archivo en una computadora identificarlo. En este caso podría es una estructura diseñada para ser un nombre apropiado: ESTUDIANTES.

En resumen, podríamos decir que un ARCHIVO está formado por un conjunto de REGISTROS, y estos a su vez por un conjunto de CAMPOS.

17


BASE DE DATOS

E

s una colección de archivos relacionados lógicamente, que se estructura en diferentes formas para reducir duplicaciones y proporcionar un mejor acceso a los datos. Constituye el nivel más alto en la jerarquía de organización de los datos, siendo el nivel más bajo el carácter. Así una base de datos de una universidad podría contener archivos de estudiantes, profesores, inventarios, libros, etc.

La figura presenta gráficamente la estructura jerárquica en base de datos.

18


EDISION, REDACCION Y FOTOGRAFIA: OSACR A. PEREZ R. 19


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.