Informe estructuras no lineales

8
1 INSTITUTO TECNOLOGICO SUPERIOR DE FELIPE CARRILLO PUERTO MATERIA: ESTRUCTURA DE DATOS DOCENTE: MIL. NIELS HENRYK ARANDA CUEVAS UNIDAD 4: ESTRUCTURAS NO LINEALES ALUMNO: ELIEZER BALAM SANTOS CARRERA: INGENIERIA EN SISTEMAS COMPUTACIONALES GRUPO: B

Transcript of Informe estructuras no lineales

Page 1: Informe estructuras no lineales

1

INSTITUTO TECNOLOGICO SUPERIOR DE FELIPE

CARRILLO PUERTO

MATERIA:

ESTRUCTURA DE DATOS

DOCENTE:

MIL. NIELS HENRYK ARANDA CUEVAS

UNIDAD 4:

ESTRUCTURAS NO LINEALES

ALUMNO:

ELIEZER BALAM SANTOS

CARRERA:

INGENIERIA EN SISTEMAS COMPUTACIONALES

GRUPO:

B

Page 2: Informe estructuras no lineales

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];

};

void limpiarpila(struct PILA *pila) {

pila->tope=0;

}

Page 3: Informe estructuras no lineales

3

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";

}

void sacarpila(struct PILA *pila, struct nodo **q){

if (pilavacia(pila)==false){

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

Page 4: Informe estructuras no lineales

4

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;

q=raiz;

while (q!=NULL){

Page 5: Informe estructuras no lineales

5

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) {

meterpila (&pila, p->rlink);

cont++;

Page 6: Informe estructuras no lineales

6

}

}

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){

meterpila (&pila, p->llink);

cont++;

Page 7: Informe estructuras no lineales

7

}

}

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

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.