Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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 Bibliograa (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
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)
Bibliograa
TAREA Miercoles (04/09/13)
Investigar Recursividad
Ejemplos 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 <stdio.h>
2. #include <conio.h>
3. #include <stdlib.h>
4. #include <string.h>
5.
6. struct agenda
7. {
8. char nombre[50];
9. char telefono[25];
10. char mail[50];
11. };
12.
13. struct nodo
14. {
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 nodo
38. 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 actual
65. 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 cdigo
public 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
Arreglos Arreglos
Ventajas Desventajas
Insercion rpida, acceso rpido si
se conoce el indice.
Bsqueda y borrado lento
Bsqueda rpida
(En arreglos ordenados)
Insercin lenta
(Arreglo ordenado)
Pila Pila
Ventajas Desventajas
Proporciona acceso ultimo en
entrar, primero en salir
Acceso lento a otros
elementos
Cola Cola
Ventajas Desventajas
Proporciona primero en entrar
primero en salir
Acceso lento a otros
elementos
Lista Lista
Ventajas Desventajas
Insercin y borrado rpido Bsqueda lenta
Estructura de Datos I
rbol rbol
Ventajas Desventajas
Bsqueda, insercin y borrado
rpido (
Ar bol bi nar i o: s i el ar bol
permanece permanent ement e
balanceado.
rbol rojinegro: rbol siempre
balanceado.
r bol 2- 3- 4: r bol si empr e
balanceado)
Complejos
Montculo Montculo
Ventajas Desventajas
Insercin, borrado y acceso al
elemento ms grande rpido.
Acceso lento a otros
elementos.
Grafo Grafo
Ventajas 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