Estructura de Datos (2) DOCUMENTO PDF
Document Details
Uploaded by Deleted User
Tags
Summary
Este documento presenta conceptos bsicos de estructuras de datos en ingeniera de software. Se enfoca en la definicin de estructuras de datos, punteros, abstraccin, y operaciones fundamentales como init\_stack, push\_stack, etc. en un contexto de programacin.
Full Transcript
**Ingeniería de software/ Modelos de proceso/Fases genéricas de desarrollo:** - - - - - Metodologías de desarrollo: - - - - **Punteros:** Variables estáticas y dinámicas, se diferencian en que las estáticas ocupan y reservan un espacio de memoria hasta que el programa finali...
**Ingeniería de software/ Modelos de proceso/Fases genéricas de desarrollo:** - - - - - Metodologías de desarrollo: - - - - **Punteros:** Variables estáticas y dinámicas, se diferencian en que las estáticas ocupan y reservan un espacio de memoria hasta que el programa finalice, en oposición, las dinámicas pueden eliminarse en cualquier momento, dejando libre este espacio. Siguiendo esta misma lógica: El puntero muestra la dirección de memoria que ocupa otra variable, múltiples pueden apuntar a la misma variable. **Estructura de datos**: forma de almacenar y organizar datos en una computadora para que puedan usarse de manera eficiente. Ejemplos: vectores, matrices, archivos, listas enlazadas, pilas, colas, árboles, grafos, etc. Según su tamaño durante la ejecución del programa, se pueden clasificar en dos tipos: - - - - **Abstracción:** enfocarnos en una cierta parte de un problema, ignorando aquellos detalles que no son importantes, con el objetivo de reducir su complejidad. (Abstracción de procesos y de datos) [especificación informal y formal,] la informal refiere al lenguaje coloquial informal, el formal de una función expresa de forma matemática los datos que se ingresan, la operación a realizar y el resultado esperado. **Tipo de Dato Abstracto (TDA)** TDA = Representación (Datos) + Operaciones (Funciones y procedimientos) **Pila: C**olección ordenada de elementos, con 3 características: Contiene elementos del mismo tipo. La recuperación de elementos se realiza siguiendo la regla \"último en entrar, primero en salir", en inglés Last In First Out (LIFO). La cantidad de elementos almacenados varía durante la ejecución. - - - - **Operaciones fundamentales del TDA Pila:** +-----------------------+-----------------------+-----------------------+ | **Operación** | **Funcionamiento** | **Sintaxis** | +=======================+=======================+=======================+ | **init\_stack** | Inicia la pila, entra | void | | | una pila de datos, | init-stack(t\_pila | | | sale una pila de | &pila){ | | | datos inicializada | | | | vacía. | pila.cima=-1; | | | | | | | | } | +-----------------------+-----------------------+-----------------------+ | **push\_stack** | Agrega un elemento a | void push\_stack( | | | la pila de datos, | t\_plia &pila, int | | | entra lapila y el | nuevo){ | | | nuevo, se agrega al | | | | final | if | | | | (full\_stack(pila)){ | | | | | | | | cout\siguiente; | | | | | | | | borrado-\>siguiente = | | | | NULL; | | | | | | | | } | | | | | | | | return borrado; | | | | | | | | } | +-----------------------+-----------------------+-----------------------+ | eliminar nodo() | elimina un nodo | pnodo | | | específico de la | eliminar\_nodo(pnodo | | | lista | &lista, int valor){ | | | | | | | | pnodo borrado, i; | | | | | | | | if(lista == NULL){ | | | | | | | | borrado = NULL; | | | | | | | | } | | | | | | | | else{ | | | | | | | | if(lista-\>dato == | | | | valor){ | | | | | | | | borrado = lista; | | | | | | | | lista = | | | | borrado-\>siguiente; | | | | | | | | borrado-\>siguiente = | | | | NULL; | | | | | | | | } | | | | | | | | else{ | | | | | | | | for(i=lista; | | | | i-\>siguiente != NULL | | | | && | | | | valor!=(i-\>siguiente | | | | )-\>dato; | | | | i=i-\>siguiente); | | | | | | | | if(i-\>siguiente != | | | | NULL){ | | | | | | | | borrado = | | | | i-\>siguiente; | | | | | | | | i-\>siguiente = | | | | borrado-\>siguiente; | | | | | | | | borrado-\>siguiente = | | | | NULL; | | | | | | | | } | | | | | | | | else{ | | | | | | | | borrado=NULL; | | | | | | | | } | | | | | | | | } | | | | | | | | } | | | | | | | | return borrado; | | | | | | | | } | +-----------------------+-----------------------+-----------------------+ | eliminar\_final() | elimina el último | pnodo | | | nodo de la lista | eliminar\_final(pnodo | | | | &lista){ | | | | | | | | pnodo borrado, i; | | | | | | | | if(lista == NULL){ | | | | | | | | borrado = NULL; | | | | | | | | } | | | | | | | | else{ | | | | | | | | if(lista-\>siguiente | | | | == NULL){ | | | | | | | | borrado=lista; | | | | | | | | lista=NULL; | | | | | | | | } | | | | | | | | else{ | | | | | | | | for(i=lista; | | | | (i-\>siguiente)-\>sig | | | | uiente | | | | != NULL; | | | | | | | | i=i-\>siguiente); | | | | | | | | borrado = | | | | i-\>siguiente; | | | | | | | | i-\>siguiente = NULL; | | | | | | | | } | | | | | | | | } | | | | | | | | return borrado; | | | | | | | | } | +-----------------------+-----------------------+-----------------------+ | mostrar\_lista() | muestra el contenido | void mostrar(pnodo | | | de los nodos de la | lista){ | | | lista | | | | | pnodo i; | | | | | | | | if(lista != NULL){ | | | | | | | | for(i = lista; i != | | | | NULL; i = | | | | i-\>siguiente){ | | | | | | | | cout \sig; (i-\>sig)-\>sig = nuevo; c.nuevo-\>sig = i-\>sig; i-\>sig = nuevo; d.i -\> sig = nuevo -\> sig; nuevo -\> sig = i-\>sig; La respuesta correcta es: nuevo-\>sig = i-\>sig; i-\>sig = nuevo; Pregunta 14 Las operaciones top\_queue y bottom\_queue nos permiten recuperar un elemento del final y del frente respectivamente y sin quitarlo de la cola. Seleccione una:Verdadero o falso La respuesta correcta es \'Falso\' Pregunta 15 Se considera a las listas enlazadas como estructuras dinámicas debido a su capacidad de crecer en tiempo de ejecución. Seleccione una: Verdadero o Falso La respuesta correcta es \'Verdadero\' Pregunta 16 Una cola (o queue) es una colección ordenada de elementos, con 3 características: a.La cantidad de elementos almacenados varía durante la ejecución (Estructura dinámica). b.La recuperación de elementos se realiza siguiendo la regla "Último en entrar, primero en salir". En inglés Last In First Out (LIFO). c.Ninguna es correcta. d.Contiene elementos del mismo tipo. e.La recuperación de elementos se realiza siguiendo la regla "Primero en entrar, primero en salir". En inglés First In First Out (FIFO). Las respuestas correctas son: Contiene elementos del mismo tipo., La recuperación de elementos se realiza siguiendo la regla "Primero en entrar, primero en salir". En inglés First In First Out (FIFO)., La cantidad de elementos almacenados varía durante la ejecución (Estructura dinámica). Pregunta 17 El comportamiento característico de una pila es: a.Ultimo en entrar, ultimo en salir. b.Primero en entrar, primero en salir c.Primero en entrar, último en salir d.Último en entrar, primero en salir La respuesta correcta es: Último en entrar, primero en salir Pregunta 18 El comportamiento caracteristico de TDA Cola es a.Primero en entrar, primero en salir b.Ninguna es correcta. c.Ultimo en entrar, primero en salir d.Primero en entrar, ultimo en salir La respuesta correcta es: Primero en entrar, primero en salir Pregunta 19 Se tiene la siguiente cola de jugadores: Azul, Verde, Rojo, Blanco que son sometidos al siguiente orden de juego: Azul, Verde, Rojo, Blanco, Azul, Verde, Rojo, etc. Se implemento una simulación donde se jugó una partida de 14524 turnos. Pruebe la simulación con una cola de caracteres o de string, y responda quien jugó en el último turno. t\_cola c; init\_queue(c); push\_queue(c, \'azul\'); push\_queue(c, \'verde\'); push\_queue(c, \'rojo\'); push\_queue(c, \'blanco\'); char currentTurn; for(int i = 0; i \< 14524; i++){ currentTurn = pop\_queue(c); push\_queue(c, currentTurn); } cout \siguiente)-\>dato; i=i-\>siguiente); c.for(i=lista; i-\>siguiente != NULL && valor!=i-\>dato; i=i-\>siguiente); d.for(i=lista; i-\> != NULL && valor!=(i-\>siguiente)-\>dato; i=i-\>siguiente); La respuesta correcta es: for(i=lista; i-\>siguiente != NULL && valor!=(i-\>siguiente)-\>dato; i=i-\>siguiente); Pregunta 22 La cantidad de nodos que se pueden agregar a una lista se define antes de ejecutar el programa y no se puede modificar. Seleccione una: Verdadero o Falso La respuesta correcta es \'Falso\' Pregunta 23 ¿Qué muestra la siguiente secuencia de código? int main(){ pnodo lista; pnodo nodo; crear\_nodo(nodo, 2); agregar\_inicio(lista, nodo); crear\_nodo(nodo, 5); agregar\_final(lista, nodo); crear\_nodo(nodo, 6); agregar\_ordenado(lista, nodo); mostrar\_lista(lista); return 0; } a.No muestra nada, ocurre un error. b.5, 6, 2 c.6,5,2 d.2, 5, 6 La respuesta correcta es: No muestra nada, ocurre un error. Pregunta 24 Un tipo de dato abstracto se compone de a.Pila, cola y listas b.Datos y operaciones c.Datos y abstracciones d.Nodos y punteros La respuesta correcta es: Datos y operaciones Pregunta 25 Una bicola con reestricción de entrada permite el acceso de elementos\... a.Tanto por el frente como por el final b.Solo por el frente c.Según sea la opción que elija el usuario. d.Solo por el final La respuesta correcta es: Solo por el final