Estructura de Datos

Embed Size (px)

DESCRIPTION

Estructura de Datos

Citation preview

  • Total de Horas: 90hrsMaestra: Ana Mara de LourdesCorreo: [email protected]

    Objetivo de la asignatura: ! Que el alumno desarrolle aplicaciones que organicen informacin con base a ! estructura de datos abstractos empleando paradigma orientado a objetos que ! agiliza el acceso a datos almacenados.

    Estructura de Datos:

    Cualquier representacion de datos y sus operaciones asociadas:

    ! En sentido general, cualquier representacion de datos, incluso un numero entero o un numero de coma flotante almacenado en la computadora, es una sencilla estructura de datos.

    En un sentido mas especifico, una estructura de datos es una organizacion o estructuracion de una coleccion de elementos dato.

    Objetivo de facilitar la manipulacion de estos datos como un todo y/o individualmente.

    Define ademas de la organizacion la interrelacion de datos y un conjunto de operaciones que se pueden realizar.

    NOTA: Cuando ya esta en orden entonces sera una estructura de datos pues esta organizada si no sera solamente una representacion.

    NOTA 2: Facilita la manipulacin de los datos..

    Las operaciones basicas son: Alta, adicionar un nuevo valor a la estructura. Baja, borrar un valor de la estructura Busqueda, encontrar un determinado valor en la estructura para se realizar una

    operacion con este valor, en forma SECUENCIAL o BINARIO (Siempre y cuando los datos esten ordenados)

    Otras operaciones que se puede realizar son

    Ordenamiento, de los elementos pertenecientes a la estructura. Apareo, dadas dos estructuras originar una nueva ordenada y que contenga a las

    apareadas.

    De que sirven?! Usualmente, las estructuras nos sirven para representar abstractamente una parte de un problema, generando asi, un modelo acorde a las necesidades de la situacion y no un modelo con detalles que no usaremos. (Luis Lastra, Instituto Profesional Virginio Gmez)

    Estructura de Datos I

  • Estructuras Uilizadas en Programacin

    Arrays! Vectores! Matrices

    Listas Enlazadas! Listas Simples! Listas Dobles! Listas Circulares

    Pilas

    Colas

    Arboles! Arboles Binarios

    Tarea

    Que son y cuales son los tipos de Datos Abstractos con Bibliografia (URL pagina donde se encontro, Nombre de la Pagina, Nombre del Autor)

    Que entendimos y que no entendimos

    NOTA: Ver anexo 1

    .

    Tipos de Datos Abstractos--

    TAD --> es un procedimiento que nos ayuda a conocer una solucion para la resolucion de un problema

    Un objeto es un dato abstracto--

    Que debe de contener los trabajos

    Portada (Arial 16, Todo en Mayusculas) Logo de la UTA Nombre de la Universidad Nombre de la Carrera Nombre de la Materia Titulo de la Presentacion

    Estructura de Datos I

  • Introduccin (Manera general de lo que trata, centrado, Arial 14 y el titulo Arial 16) Desarrollo (Titulos Arial 16, Alineacion Derecha, Texto Arial 14 Justificado) Conclusion (Titulo Arial 16, Arial 14 Texto Centrado) Integrantes (Apellido por orden Alfabetico Bibliografia

    TAREA Miercoles (04/09/13)Investigar RecursividadEjemplos de colas, pilas , arboles, listas, grafos

    TAREA..

    Recursividad: Tcnica de programacin la cual nos permite ejecutar n veces un bloque de instrucciones donde se llama a si misma y los valores se reservan en una pila de datos para cuando se vuelve a llamar se quitan los antiguos y quedan los nuevos.

    Ejemplo:

    public class Recursividad {

    int factorial(int fact) { if (fact>0) { int valor=fact * factorial(fact-1); return valor; } else return 1; } public static void main(String[] ar) { Recursividad re=new Recursividad(); int f=re.factorial(4); System.out.println("El factorial de 4 es "+f); }}

    Estructura de Datos I

  • PILA:C:

    1. #include 2. #include 3. #include 4. #include 5. 6. struct agenda7. {8. char nombre[50];9. char telefono[25];10. char mail[50];11. };12. 13. struct nodo14. {15. struct agenda dato;16. struct nodo *proximo;17. };18. 19. struct nodo *nuevonodo();20. int colavacia(struct nodo *);21. struct nodo *creacola(struct nodo *, struct agenda);22. void mostrar(struct nodo *);23. 24. void main()25. {26. struct nodo *pri=NULL, *ult=NULL;27. struct agenda x;28. printf("Ingrese nombre: ");29. gets(x.nombre);30. while(strcmpi(x.nombre,"fin"))31. {32. printf("Ingrese telefono: ");33. gets(x.telefono);

    Estructura de Datos I

  • 34. printf("Ingrese mail: ");35. gets(x.mail);36. ult=creacola(ult,x);37. if(pri==NULL) pri=ult; // Si es la 1 pasada pongo en pri el

    valor del primer nodo38. printf("Ingrese nombre: ");39. gets(x.nombre);40. }41. if(colavacia(pri)==1) { printf("No se ingresaron registros");

    getch(); }42. else mostrar(pri);43. }44. 45. struct nodo *nuevonodo()46. {47. struct nodo *p;48. p=(struct nodo *)malloc(sizeof(struct nodo));49. if(p==NULL)50. {51. printf("Memoria RAM Llena");52. getch();53. exit(0);54. }55. return p;56. }57. 58. struct nodo *creacola(struct nodo *ult, struct agenda x)59. {60. struct nodo *p;61. p=nuevonodo();62. (*p).dato=x;63. (*p).proximo=NULL;64. if(ult!=NULL) (*ult).proximo=p; // Si hay nodo anterior en prox

    pongo la direccion del nodo actual65. return p;66. }

    Estructura de Datos I

  • 67. 68. int colavacia(struct nodo *pri)69. {70. if(pri==NULL) return 1;71. else return 0;72. }73. 74. void mostrar(struct nodo *pri)75. {76. struct nodo *aux;77. while(pri!=NULL)78. {79. printf("Nombre: %s - Telefono: %s - Mail: %s \n",pri-

    >dato.nombre,pri->dato.telefono,pri->dato.mail);80. aux=pri;81. pri=(*pri).proximo;82. free(aux);83. }84. getch();85.}

    Estructura de Datos I

  • LISTAS:

    Ejemplo: en cdigopublic class nodo {private Object elemento;private nodo siguiente; public nodo() { this(null,null); } public nodo(Object e, nodo n){ elemento=e; siguiente=n; } Object getElemento(){ return elemento; } nodo getSiguiente(){return siguiente; } void setElemento(Object nuevoelemento){ elemento=nuevoelemento; }void setSiguiente(nodo nuevosiguiente){ siguiente=nuevosiguiente; } }Un programa que acceda a la lista.public class agrega {public static void main(String [] args){ nodo p,q; p = new nodo("uno",null); q = new nodo(); q.setElemento("dos"); q.setSiguiente(p); p = q; q = new nodo(); q.setElemento("tres"); q.setSiguiente(p); p = q; while (q!=null){ System.out.println(q.getElemento()); System.out.println(q.toString()); q=q.getSiguiente(); } } }

    Estructura de Datos I

  • Arboles:

    Existen 4 formas de representar un rbol-Grafo-Diagrama de venn-Anidacion de parntesis-Notacin identada

    Grafos:

    Ventajas y Desventajas de las estructuras de datos

    ArreglosArreglosVentajas Desventajas

    Insercion rpida, acceso rpido si se conoce el indice.

    Bsqueda y borrado lento

    Bsqueda rpida(En arreglos ordenados)

    Insercin lenta(Arreglo ordenado)

    PilaPilaVentajas Desventajas

    Proporciona acceso ultimo en entrar, primero en salir

    Acceso lento a otros elementos

    ColaColaVentajas Desventajas

    Proporciona primero en entrar primero en salir

    Acceso lento a otros elementos

    ListaListaVentajas Desventajas

    Insercin y borrado rpido Bsqueda lenta

    Estructura de Datos I

  • rbolrbolVentajas Desventajas

    Bsqueda, insercin y borrado rpido (A r b o l b i n a r i o : s i e l a r b o l permanece permanentemente balanceado.rbol rojinegro: rbol siempre balanceado.rbol 2 -3 -4: rbo l s iempre balanceado)

    Complejos

    MontculoMontculoVentajas Desventajas

    Insercin, borrado y acceso al elemento ms grande rpido.

    Acceso lento a otros elementos.

    GrafoGrafoVentajas Desventajas

    Modela situaciones del mundo real Algunos algoritmos son lentos y complejos

    Que es lo que entendi y no entendi

    TAREA: Saber identificar cuando es cada uno de los ejemplos.

    RECURSIVIDAD:

    Metodo donde se permite repetirse a si mismo----Es utilizado para problemas que disponen hablarse a si mismo, es una alternativa utilizada pero no eficiente. Permite especificar soluciones naturales,

    Estructura de Datos I

  • sencillas, en caso de que no se puedan resolver, por lo tanto se hace como herramienta muy poderosa e importante para resolver problemas y en la programacin. Es una propiedad que posee un mtodo para poderse hablar as msmo, este mtodo tambin tiene dos tcnicas de Divide y venceras Vuelta atras

    Recursividad (Requeriere estructura de seleccin) VS.

    Iteracin (Requiere estructura de repeticin)

    09 - Septiembre - 2013 Clase Lunes

    1.-Programar funcion del factorial tanto de manera normal como de manera recursiva. (Hecho en clase)

    2.-Calcule la potencia de x elevado a la N en forma recursiva que x sea real y n entero positivo

    3.-Programa que reporte N terminos de la serie fibonacci

    4.-Programa que calcule el Maximo Comun Divisor de dos numeros

    5.- Numero que convierta de base 10 a base B que sea entre 2 y 9

    6.-Dado un numero natural N obtener la suma de los digitos

    7.-Escribir un metodo recursivo de int vocales para calcular el numero de vocales de una cadena

    Estructura de Datos I

  • Estructura de Datos I