Técnicas de grabado y estampación : procesos y materiales
Informe estructuras no lineales unidad 4
1. 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
2. 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];
};
3. 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";
}
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;
5. 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 << "nnLos datos del arbol recorrido en profundidad son: n";
while (pilavacia(&pila)==false){
sacarpila (&pila,&p);
cout << endl << p->info;
if (p->rlink != NULL) {
6. 6
meterpila (&pila, p->rlink);
cont++;
}
}
cout << "nnLos 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 << "nnLos datos del arbol recorrido en profundidad son: n";
while (pilavacia(&pila)==false){
sacarpila (&pila,&p);
cout << endl << p->info;
if (p->llink != NULL){
7. 7
meterpila (&pila, p->llink);
cont++;
}
}
cout << "nnLos 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.
8. 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.