Problemas de programación con estructura de datos
Enviado por tahiriduran • 22 de Mayo de 2019 • Ensayo • 307 Palabras (2 Páginas) • 80 Visitas
Universidad Iberoamericana (UNIBE)
[pic 1]
Nombre & Matricula:
Tahirí Durán 17-1072
José Matos 17-1079
María Montero 18-0738
Materia:
Estructura de Datos
Tema:
Problemas de programación con estructura de datos
Profesor:
Patino
Fecha:
06/04/19
- Construir una función que sume los elementos de una lista de enteros recursivamente.
int Suma(Lista L,Posicion inicial,Posicion final)
{
int n;
if(inicial!=final){
Recuperar(&n,inicial,L);
return n+Suma(L,Siguiente(inicial,L),final);
}
else return 0;
}
- El recorrido en pre-orden de un determinado árbol binario es: GEAIBMCLDFKJH y en in-orden IABEGLDCFMKHJ .Resolver:
- Dibujar el árbol binario.
[pic 2]
- Dar el recorrido en post-orden.
El recorrido en post-orden es IBAEDLFCHJKMG
C ) Diseñar una función para dar el recorrido en post-orden dado el recorrido en pre-orden e in-orden y escribir un programa para comprobar el resultado del apartado anterior.
/*Fichero: comprobar.c */
#include < stdio.h>
#include < stdlib.h>
#include < string.h>
char *preorden="GEAIBMCLDFKJH";
char *inorden="IABEGLDCFMKHJ";
char *postorden;
/*---------------------------------------*/
void post(char *pre,char *in,char *pos,int n)
{
int longIzqda;
if(n!=0){
pos[n-1]=pre[0];
longIzqda=strchr(in,pre[0])-in;
post (pre+1,in,pos,longIzqda);
post (pre+1+longIzqda,in+1+longIzqda,pos+longIzqda,n-1-longIzqda);
}
}
/*----------------------------------------*/
int main(int argc,char *argv[])
{
int aux;
aux=strlen(preorden);
postorden=(char *)malloc(aux*sizeof(char));
if (postorden){
printf("El preorden es: %s\n",preorden);
printf("El inorden es: %s\n",inorden);
post(preorden,inorden,postorden,aux);
postorden[aux]='\0';
printf("El postorden calculado es: %s\n",postorden);
free(postorden);
}
else{
fprintf(stderr,"Error: Sin memoria\n");
return 1;
}
return 0;
}
3.Un grafo no dirigido se dice de Euler si existe un camino Euleriano que incluye a todas sus aristas. Construir una función que dado un grafo no dirigido determine si es de Euler.
/*Fichero: euleriano.c */
#include < stdio.h >
#include "grafo.h"
int numComponentesConexas(grafo G);
int grado(vertice v,grafo G);
int euleriano(grafo G)
{
int es_euleriano=1;
vertice v;
if(tipoGrafo(G)==DIRIGIDO)
error("El grafo debe ser no dirigido");
if(numComponentesConexas(G)==1) /*El grafo es conexo*/
...