Está en la página 1de 8

VENANCIO GUTIERREZ VANESSA ESTRUCTURAS DE DATOS ARREGLOS

2CM31

Un arreglo se compone de elementos de igual tamao almacenados linealmente en posiciones de memoria consecutiva. Se puede acceder a cada elemento de datos individual utilizando un subndice, o ndice, para seleccionar uno de los elementos. En C/C++ , un arreglo no es un tipo de datos estndar; es un tipo agregado compuesto de cualquier otro tipo de datos. La sintaxis de declaracin de arreglos es: tipo nombre_arreglo [numero_de_elementos]; Los siguientes son dos ejemplos de declaraciones de arreglos vlidas en C/C++ : int CoordenadasDePantalla[5]; /*Un arreglo de 5 enteros */ char IDCompania[20]; /*Un arreglo de 20 caracteres */

PILAS

Una pila representa una estructura lineal de datos en que se puede agregar o quitar elementos nicamente por uno de los dos extremos. En consecuencia, los elementos de una pila se eliminan en el orden inverso al que se insertaron. Debido a est caracterstica, se le conoce como estructura LIFO (last input, first output). muchos casos prcticos en los que se utiliza la idea de pila:

ocupan lugares sucesivos en la ED y c/u tienen un nico sucesor/predecesor, con excepcin del primero/ltimo. int main() { char cadena [100]; int i; CLpila pila1(200); // declara una pila de 200 elementos CLpila pila2; // declara una pila del tamao por defecto CLpila pila3(pila1); // declara una pila usando el constructor copia cout << "\nIntroduzca una cadena:\n"; cin >> cadena; i=0;

VENANCIO GUTIERREZ VANESSA while(cadena[i] != '\0') { if(!pila1.Llena()) { pila1.Meter(cadena[i]); i++; } else break; } pila3 = pila1; cout << "\n Vaciando Pila:\n"; while( !pila1.Vacia()) cout << pila1.Sacar(); cout << "\n"; return 0 }

2CM31

Colas

Una Cola es otro tipo especial de lista en el cual los elementos se insertan por un extremo(el posterior) y se suprimen por el otro(el anterior o frente). Las colas se conocen tambin como listas FIFO(primero en entrar, primero en salir). Las operaciones para las colas son anlogas a las de las pilas. Las diferencias sustanciales consisten en que las inserciones se hacen al final de la lista, y no al principio, y en que la terminologa tradicional para colas y listas no es la misma.

VENANCIO GUTIERREZ VANESSA int main() { char c; Pila<char> pila; Cola<char> cola; cout << "Detector de palndromos.\n" "Introduzca los caracteres. ^D para finalizar.\n"; while (cin.get(c)) { if (!isspace(c)) { pila.poner(tolower(c)); cola.poner(tolower(c)); } } cout << endl; while (!cola.vacia()) { if (cola.cabecera() != pila.elemento()) { cout << "La cadena NO es un palndromo\n"; return 1; } cola.quitar(); pila.quitar(); } cout << "La cadena SI es un palndromo\n"; return 0; }

2CM31

Arboles

El tipo de dato rbol es un tipo de dato mas complejo que los tipos lineales, es decir, no existe una relacin de anterior y siguiente entre los elementos que lacomponen(cada elemento tendr uno anterior y otro posterior , salvo los casos de primero y ltimo). Un rbol binario puede definirse como un rbol que en cada nodo puede tener como mucho grado 2, es decir, a lo ms 2 hijos. Los hijos suelen denominarse hijo a la izquierda e hijo a la derecha, establecindose de esta forma un orden en el posicionamiento de los mismos. Todas las definiciones bsicas que se dieron para rboles generales permanecen inalteradas sin ms que hacer las particularizaciones correspondientes.

VENANCIO GUTIERREZ VANESSA

2CM31

Si n es un nodo y T izq , T der son rboles binarios, entonces podemos construir un nuevo rbol binario que tenga como raz el nodo n y como subrboles Tizq y T der (subrbol izquierdo y subrbol derecho de n, respectivamente). Un rbol vaco es un rbol binario rbol binario homogneo es aquel cuyos nodos tienen grado 0 2(no hay ninguno de grado 1). rbol binario completo es aquel que tiene todos los niveles llenos excepto, quizs, el ltimo en cuyo caso los huecos deben quedar a la derecha. Nmero mximo de nodos por nivel en un rbol binario en un nivel i es 2 i-1 . Un rbol binario de bsqueda (ABB) es un rbol binario con la propiedad de que todos los elementos almacenados en el subrbol izquierdo de cualquier nodo x son menores que el elemento almacenado en x ,y todos los elementos almacenados en el subrbol derecho de x son mayores que el elemento almacenado en x.

La bsqueda en rboles binarios es un mtodo de bsqueda simple, dinmico y eficiente considerado como uno de los fundamentales en Ciencia de la Computacin. De toda la terminologa sobre rboles, tan slo recordar que la propiedad que define un rbol binario es que cada nodo tiene a lo ms un hijo a la izquierda y uno a la derecha. Para construir los algoritmos consideraremos que cada nodo contiene un registro con un valor clave a travs del cual efectuaremos las bsquedas.

Leer de la entrada estndard un conjunto de enteros hasta el fin de entrada. Despus listarlos todos, ordenados y sin repeticiones. ARBOLES BINARIOS int { main(int ABB<int> int ABB<int>::Iterador while (cin>>i) argc, char *argv[]) a; i; p; {

VENANCIO GUTIERREZ VANESSA a.insertar(i); } for cout cout return } <<

2CM31

(p=a.primero();p!=a.final();p=a.siguiente(p)) a.etiqueta(p) << ' '; << endl; 0;

LISTAS

Una lista es un conjunto de elementos del mismo tipo que: O bien es vaco, en cuyo caso se denomina lista vaca. O bien puede distinguirse un elemento, llamado cabeza, y el resto de los elementos constituyen una lista L, denominada resto de la lista original. Una propiedad importante con la que se caracteriza a las listas es que su longitud puede aumentar o disminuir, segn se requiera. Es ms, podemos insertar o eliminar elementos en cualquier posicin de una lista. 1. Escribir un programa que inserte elementos del 0 al 20, en orden inverso, y elimine los impares. int main() { Lista<int> l; for (int i = 0; i < 21; i++) l.insertar(l.primero(), i); cout << "Enteros del 0 al 20, en orden inverso:" << endl << l << endl; for (Lista<int>::Posicion p = l.primero(); p != l.final();) { int a = l.elemento(p); if (a % 2 == 1) p = l.borrar(p); else p = l.siguiente(p); {

VENANCIO GUTIERREZ VANESSA cout << "Eliminados los impares:" << endl << l << endl; Lista<int>::Posicion p = l.final(); for (p = l.anterior(p); p != l.primero(); p = l.anterior(p)) cout << l.elemento(p) << " "; cout << l.elemento(p) << endl; return 0; }

2CM31

Matrices Una matriz (array en ingls) es un conjunto de elementos contiguos, todos del mismo tipo, que comparten un nombre comn y a los que es posible acceder mediante la posicin (ndice) que ocupa cada uno de ellos en la matriz, como un vector o una matriz en lgebra. Esta disposicin permitir escribir cdigo ms simple, ya que ser posible establecer bucles en los que se recorra los elementos de una matriz mediante el nmero de ndice. A las matrices de una dimensin se les suele llamar tambin vectores o listas, y a las matrices de dos dimensiones, tablas. Declaracin de matrices

La declaracin de una matriz especifica el nombre de la matriz, el nmero de elementos de la misma y el tipo de stos: donde: variable es el nombre de la matriz. dimension es una lista de expresiones numricas, separadas por comas y que definen las dimensiones de la matriz. Esta lista puede ser de la forma: [inferior To] superior [, ... tipo define el tipo de la variable (Integer, Long, String, etc.) Ejemplos de declaracin de matrices

Lista o vector de 60 enteros, indexados del 0 al 59:

VENANCIO GUTIERREZ VANESSA Dim temp(59) As Integer Lista o vector de 60 enteros, indexados del 1 al 60: Dim temp(1 To 60) As Integer Lista o vector de 60 cadenas de caracteres de longitud fija 40: Dim temp(1 To 60) As String * 40 Tabla de 10 * 10 elementos de tipo Double: Dim a(9,9) As Double Dim a(1 To 10, 1 To 10) As Double Dim a(-5 To 4, 2001 To 2010) As Double Ejemplo de manipulacin de matrices

2CM31

Const n = 12 Dim A(1 to n) As Double matriz de n elementos Dim i As Integer Bucle For para Rellenar la matriz a con datos. For i = 1 To n A(i) = InputBox(Introduce el elemento & i & de A) Next i Bucle For para Visualizar la matriz con Print For i = 1 To n MsgBox A(i) Next i Matrices dinmicas Una matriz dinmica, a diferencia de las anteriores, puede ser redimensionada en cualquier momento de la ejecucin del programa. Para crear una matriz dinmica, primero hay que declararla como si fuera una matriz esttica (con Dim), pero sin darle dimensin. Para reasignar dinmicamente el nmero de elementos se utiliza la sentencia ReDim. No es posible cambiar el nmero de dimensiones

VENANCIO GUTIERREZ VANESSA de la misma, slo los tamaos de cada dimensin. Cada vez que se ejecuta ReDim, todos los valores previamente almacenados se pierden. Para cambiar el tamao conservando los valores hay que utilizar la palabra clave Preserve, en cuyo caso no es posible cambiar el/los ndice/s inferior/es, slo el superior.

2CM31

También podría gustarte