Informe estructuras no lineales unidad 4

8
1 INSTITUTO TECNOLOGICO SUPERIOR DE FELIPE CARRILLO PUERTO MATERIA: ESTRUCTURA DE DATOS DOCENTE: MIL. NIELS HENRYK ARANDA CUEVAS UNIDAD 3: ESTRUCTURAS LINEALES ALUMNO: ELIU OSSEAS PUC PUC CARRERA: INGENIERIA EN SISTEMAS COMPUTACIONALES GRUPO: B

Transcript of Informe estructuras no lineales unidad 4

Page 1: Informe estructuras no lineales unidad 4

1

INSTITUTO TECNOLOGICO SUPERIOR DE FELIPE

CARRILLO PUERTO

MATERIA:

ESTRUCTURA DE DATOS

DOCENTE:

MIL. NIELS HENRYK ARANDA CUEVAS

UNIDAD 3:

ESTRUCTURAS LINEALES

ALUMNO:

ELIU OSSEAS PUC PUC

CARRERA:

INGENIERIA EN SISTEMAS COMPUTACIONALES

GRUPO:

B

Page 2: Informe estructuras no lineales unidad 4

2

INTRODUCCION:

Los árboles son formas de manejo de datos de apuntadores para estar

ubicando información de los datos siempre y cuando manteniendo la jerarquía

de los datos, como su nombre de árbol es una serie de directorios de datos

donde se almacena información y podemos realizar recorridos de ciertas

formas para poder localizar un elemento ya que se pueden definir en ramas y

cada rama es un camino que podemos seguir para llegar a la información.

PROGRAMA DONDE SE EMPLEA UN ARBOL.

#include <iostream>

#include <stdlib.h>

#include <conio.h>

#define maxpila 100

using namespace std;

struct nodo

{

int info;

struct nodo *llink;

struct nodo *rlink;

}*raiz;

struct PILA{

int tope;

struct nodo *cont[maxpila];

};

Page 3: Informe estructuras no lineales unidad 4

3

void limpiarpila(struct PILA *pila) {

pila->tope=0;

}

bool pilavacia (struct PILA *pila){

bool valor;

if (pila->tope==0) valor=true;

else valor = false;

return valor;

}

bool pilallena (struct PILA *pila){

bool valor;

if (pila->tope==maxpila) valor=true;

else valor = false;

return valor;

}

void meterpila(struct PILA *pila, struct nodo *p) {

if (pilallena (pila) == false){

pila->tope=pila->tope+1;

pila->cont[pila->tope]=p;

}

else cout << "\nERROR: No se puede insertar en la pila, ya que esta llena";

}

Page 4: Informe estructuras no lineales unidad 4

4

void sacarpila(struct PILA *pila, struct nodo

**q){

if (pilavacia(pila)==false){

*q=pila->cont[pila->tope];

pila->tope--;

}

else cout << "\nERROR: No se puede sacar de la pila, ya que esta vacia";

}

void creararbol(){

struct nodo *p, *q, *r;

int n, i;

cout << "Cuantos nodos va a tener el arbol?";

cin >> n;

raiz = (struct nodo *)malloc(sizeof(struct nodo));

cout << "Por favor digite la info del nodo raiz del arbol: ";

cin >> raiz->info;

raiz->llink = NULL;

raiz->rlink = NULL;

for (i=2;i<=n;i++){

p = (struct nodo *) malloc(sizeof(struct nodo));

cout << "Por favor digite la info del nodo " << i << " del arbol: ";

cin >> p->info;

p->llink = NULL;

p->rlink = NULL;

Page 5: Informe estructuras no lineales unidad 4

5

q=raiz;

while (q!=NULL){

r=q;

if (p->info > q->info) q=q->rlink;

else q=q->llink;

}

if (p->info > r->info) r->rlink=p;

else r->llink=p;

}

}

void recorrerprofDerecha(){

struct PILA pila;

struct nodo *p;

int cont=0;

limpiarpila(&pila);

meterpila (&pila, raiz);

cout << "\n\nLos datos del arbol recorrido en profundidad son: \n";

while (pilavacia(&pila)==false){

sacarpila (&pila,&p);

cout << endl << p->info;

if (p->rlink != NULL) {

Page 6: Informe estructuras no lineales unidad 4

6

meterpila (&pila, p->rlink);

cont++;

}

}

cout << "\n\nLos datos del arbol insertados a la derecha son: \n"<<cont;

}

void recorrerprofIzquierda(){

struct PILA pila;

struct nodo *p;

int cont=0;

limpiarpila(&pila);

meterpila (&pila, raiz);

cout << "\n\nLos datos del arbol recorrido en profundidad son: \n";

while (pilavacia(&pila)==false){

sacarpila (&pila,&p);

cout << endl << p->info;

if (p->llink != NULL){

Page 7: Informe estructuras no lineales unidad 4

7

meterpila (&pila, p->llink);

cont++;

}

}

cout << "\n\nLos datos del arbol insertados a la izquierda son: \n"<<cont;

}

int main(void)

{

creararbol();

recorrerprofDerecha();

recorrerprofIzquierda();

getch();

return 0;

}

DESCRIPCION DEL PROGRAMA:

El programa anterior es un poco complejo ya que tiene muchas partes de

código pero lo principal que realiza, es leer varios valores donde se almacena

una gran cantidad de información, y lo que va realizar es ir transformando las

ramas del árbol dependiendo la cantidad de información que vamos a estar

ingresando, también manejando datos de pila y los datos de la cola.

Page 8: Informe estructuras no lineales unidad 4

8

CONCLUSION:

Como conclusión nosotros entendimos esta forma de manejo de datos de

varias maneras y también a utilizarlos mediante los métodos anteriores vistos y

que van a ser de gran importancia en nuestra formación profesional, Como

conclusión tenemos que los árboles son algo parecido a los nodos y lo que

hacen es realizar la Administración de grupos de nodos que van a tener una

jerarquía de datos y apuntadores donde se maneja información. Es muy similar

a los nodos ya que de igual manera podemos decir que se aplica lo que viene

siendo la jerarquía porque de uno de mayor jerarquía se desprenden otros de

menor nivel de rango y así hasta quedar similar a un árbol o de un ejemplo de

este podría ser algo similar a un árbol genealógico que de igual manera esta

por niveles pero aquí se refiere mas al ordenamiento de datos.