lunes, 4 de marzo de 2019

Ejercicio de arboles en preorden, inorden, postorden

#include <stdio.h>
#include <conio.h>
#include <iostream>

struct nodo{
float dato;
nodo *der;
nodo *izq;
};
nodo *arbol = NULL;

nodo *crearnodo(float);

void insertarnodo(nodo *&, float);

void mostrarnodo(nodo *&, float);

void mostrarArbol(nodo *, float);

bool buscar(nodo *, float);

void preorden(nodo *);

void inorden(nodo *);

void postorden (nodo *);

void menu();

main(){
menu();
}

void menu(){
system("color f9");
int opc,contador=0;
float dato;
do{
printf("MENU \n");
printf("1. Crear nuevo nodo \n");
printf("2. Mostrar el arbol \n");
printf("3. buscar un elemento en el arbol \n");
printf("4. Recorrer el arbol en pre-orden \n");
printf("5. Recorrer el arbol en in-orden \n");
printf("6. Recorrer el arbol en Post-orden \n");
printf("7. salir \n");
printf("digite una opcion: \n");
scanf("%d",&opc);

switch(opc){
case 1:printf("digite un numero: \n");
   scanf("%f",&dato);
   insertarnodo(arbol,dato);
   printf("\n");
   system ("pause");
   break; 
case 2: printf("El arbol es: \n");
mostrarArbol(arbol,contador);
printf("\n");
system ("pause");
break;
case 3: printf("\n Digite el elemento a buscar: \n");
scanf("%f",&dato);
if(buscar(arbol,dato) == true){
printf("El elemento %f se ha encontrado",dato);
}else{
printf("El elemento no fue encontrado");
}
printf("\n");
system ("pause");
case 4: printf("Pre-orden");
preorden(arbol);
printf("\n\n");
system ("pause");
break;
case 5: printf("In-orden");
inorden(arbol);
printf("\n\n");
system ("pause");
break;
case 6: printf("Post-orden");
postorden(arbol);
printf("\n\n");
system ("pause");
break;
}
system ("cls");
}while(opc!=7);
}

nodo *crearnodo(float n){
nodo *nuevo_nodo = new nodo;
nuevo_nodo->dato=n;
nuevo_nodo->der=NULL;
nuevo_nodo->izq=NULL;
return nuevo_nodo;
}


void insertarnodo (nodo *&arbol, float n){
if(arbol==NULL){
nodo *nuevo_nodo = crearnodo(n);
arbol = nuevo_nodo;
}else{
int vz = arbol->dato;
if(n<vz){
insertarnodo(arbol->izq,n);
}else{
insertarnodo(arbol->der,n);
}
}
}

void mostrarArbol(nodo *arbol, float cont){
if(arbol == NULL){
return;
}else{
if(arbol != NULL){
mostrarArbol(arbol->der,cont+1);
for (int i=0; i<cont;i++){
printf("      ");
}
printf("%f \n ",arbol->dato);
mostrarArbol(arbol->izq,cont+1);
}
}
}

bool buscar(nodo *arbol,float n) {
if(arbol == NULL){
return false;
}else{
if(arbol->dato == n ){
return true;
}else{
if(n<arbol->dato){
return buscar(arbol->izq,n);
}else{
return buscar(arbol->der,n);
}
}
}
}

void preorden (nodo *arbol){
if(arbol == NULL){
return;
}else{
printf("%f------",arbol->dato);
preorden(arbol->izq);
preorden(arbol->der);
}
}

void inorden(nodo *arbol){
if(arbol == NULL){
return;
}else{
inorden (arbol->izq);
printf("%f------",arbol->dato);
inorden(arbol->der);
}
}

void postorden(nodo *arbol){
if(arbol == NULL){
return;
}else{
postorden(arbol->izq);
postorden(arbol->der);
printf("%f------",arbol->dato);
}
}

Arbol: crear e insertar

#include<iostream>
#include<stdlib.h>
#include <conio.h>

struct Nodo{
int dato;
Nodo *izq;
Nodo *der;

};
void menu();
Nodo *crearNodo(int);
Nodo *arbol=NULL;
void insertarNodo(Nodo *&,int);

main(){

menu();
getch();
return 0;

}
void menu(){
int dato,op;


do{
printf("1. para agregar dato");
printf("\n2. para salir \n");
scanf("%d",&op);

switch(op){
case 1: printf("Digite un numero");
scanf("%d",&dato);
insertarNodo(arbol,dato);
break;
case 2: exit(0);
}
}while(op !=2);
}
Nodo *crearNodo(int n){
Nodo *nuevo_nodo=(Nodo *)malloc(sizeof(Nodo));

nuevo_nodo->dato=n;
nuevo_nodo->izq=NULL;
nuevo_nodo->der=NULL;

return nuevo_nodo;
}
void insertarNodo(Nodo *&arbol,int n){
if(arbol==NULL){
Nodo *nuevo_nodo=crearNodo(n);
arbol=nuevo_nodo;
}else{
int Raiz=arbol->dato;
if(n<Raiz){
insertarNodo(arbol->izq,n);

}else{
insertarNodo(arbol->der,n);
}
}
}

Eliminar Dato en Cola

//Eliminar elementos de una cola
#include<iostream>
#include<stdlib.h>
#include <conio.h>

using namespace std;

struct Nodo{
int dato;
Nodo *siguiente;
};

void insertarCola (Nodo *&, Nodo*&, int);
bool cola_vacia(Nodo *);
void eliminarCola(Nodo *&,Nodo *&,int &);
int main(){
Nodo *frente= NULL;
Nodo *fin=NULL;

int dato;

cout<<"Inserte un numero"<<endl;
cin>>dato;
insertarCola(frente,fin,dato);


cout<<"Inserte un numero"<<endl;
cin>>dato;
insertarCola(frente,fin,dato);

cout<<"Inserte un numero"<<endl;
cin>>dato;
insertarCola(frente,fin,dato);

while(frente != NULL){
eliminarCola(frente,fin,dato);

if(frente !=NULL){
cout<<dato<<" , ";

}else{
cout<<dato<<".";
}

}


getch ();
return 0;
}
void insertarCola(Nodo *&frente,Nodo *&fin, int n){
Nodo *nuevo_nodo = new Nodo();
nuevo_nodo->dato=n;
nuevo_nodo->siguiente=NULL;

if(cola_vacia(frente)){
frente=nuevo_nodo;
}else{
fin=nuevo_nodo->siguiente;
}
fin=nuevo_nodo;
cout<<"\n El numero ingresado "<<n<<" Se agrego correctamente"<<endl;
}
// bool para saber si la cola está vacía
bool cola_vacia(Nodo *frente){
return (frente==NULL)? true:false;
}

//funcion para eliminar cola
void eliminarCola(Nodo *&frente, Nodo *&fin, int &n){
n=frente->dato;
Nodo *aux = frente;

if(frente==fin){
frente=NULL;
fin==NULL;
}else{
frente=frente->siguiente;
}
delete aux;
}

Insertar Dato en Cola

#include<iostream>
#include<stdlib.h>
#include <conio.h>

using namespace std;

struct Nodo{
int dato;
Nodo *siguiente;
};

void insertarCola (Nodo *&, Nodo*&, int);
bool cola_vacia(Nodo *);
int main(){
Nodo *frente= NULL;
Nodo *fin=NULL;

int dato;

cout<<"Inserte un numero"<<endl;
cin>>dato;
insertarCola(frente,fin,dato);

cout<<"Inserte un numero"<<endl;
cin>>dato;
insertarCola(frente,fin,dato);

cout<<"Inserte un numero"<<endl;
cin>>dato;
insertarCola(frente,fin,dato);


}
void insertarCola(Nodo *&frente,Nodo *&fin, int n){
Nodo *nuevo_nodo = new Nodo();
nuevo_nodo->dato=n;
nuevo_nodo->siguiente=NULL;

if(cola_vacia(frente)){
frente=nuevo_nodo;
}else{
fin=nuevo_nodo->siguiente;
}
fin=nuevo_nodo;
}
bool cola_vacia(Nodo *frente){
return (frente==NULL)? true:false;
}

Lista Doblemente Enlazada

#include <stdlib.h>
#include<stdio.h>
#include <string.h>

struct nodo {
char inf[30];
struct nodo *ligaizq;
struct nodo *ligader;
};
main (){

char b;

struct nodo *lista1;
struct nodo *lista2;
struct nodo *lista3;
struct nodo *lista4;

lista1=(struct nodo *) malloc (sizeof(struct nodo));
fgets(lista1->inf,30,stdin);
lista1->ligaizq=NULL;
lista1->ligader=NULL;

lista2=(struct nodo *) malloc (sizeof(struct nodo));
fgets(lista2->inf,30,stdin);
lista1->ligader=lista2;
lista2->ligaizq=lista1;
lista2->ligader=NULL;

lista3=(struct nodo *)malloc(sizeof(struct nodo));
fgets(lista3->inf,30,stdin);
lista2->ligader=lista3;
lista3->ligaizq=lista2;
lista3->ligader=NULL;

printf("Los nombres agregados inicialmente son: \n %s %s %s",lista1->inf,lista2->inf,lista3->inf);

printf("El nombre a desear es: \n");

lista4=(struct nodo *)malloc(sizeof(struct nodo));
fgets(lista4->inf,30,stdin);
lista2->ligader=lista4;
lista4->ligaizq=lista3;
lista3->ligaizq=NULL;

printf("Los nombres agregados inicialmente son: \n %s %s %s %s",lista1->inf,lista2->inf,lista4->inf,lista3->inf);





}

Lista Simple

#include <iostream>
#include<conio.h>
#include<stdlib.h>
#include <stdio.h>


struct Nodo{
char dato;
Nodo *siguiente;
}*primero,*ultimo;

void insertarLista();
main(){

insertarLista();
insertarLista();

return 0;
}
void insertarLista(){
char n;
Nodo *nuevo=(Nodo*)malloc(sizeof(Nodo));
printf("\nDigite un dato");
scanf("&c",&n);
nuevo->dato=n;

if(primero ==NULL){
primero=nuevo;
primero->siguiente=NULL;
ultimo=nuevo;
}else{
ultimo->siguiente=nuevo;
ultimo->siguiente=NULL;
ultimo=nuevo;
}
printf("\nEl dato ingreso correctamente %c ",nuevo->dato);


}

miércoles, 12 de septiembre de 2018

INSERTAR DATO EN NODO




CREACION DE LISTA SIMPLE


CREACIÓN Y ELIMINACIÓN AL FINAL


ELIMINAR DATO 





TALLER 1




TALLER 3

#include <stdio.h>
#include <stdlib.h>
#include<conio.h> 
struct nodo{
char nombre[30];
char inf;
char codigo;
struct nodo *sig;
};
main(){
int op;
do{
printf("\n   1.Crear una lista vacia");
printf("\n   2.Crear un nodo al comienzo");
printf("\n   3.Crear un nodo al final");
printf("\n   4.Crear un nodo antes de otro como referencia");
printf("\n  5.Salir \n");
scanf("%d",&op);
switch(op){
case 1:
struct nodo *v;
v=(struct nodo *) malloc (sizeof(struct nodo));
v->codigo=NULL;
v->sig=NULL;
printf("%d %d",v->codigo, v->sig);
case 2:
struct nodo *cabe;
     struct nodo *nuevo;
     struct nodo *aux;
     cabe=NULL;
     char dato;
     int cant, i=0;
     printf("\n Entrar cantidad de nodos: \n");
scanf("%d",&cant); 
     while(i<=cant){
     struct nodo *P; 
     P=(struct nodo *)malloc(sizeof(struct nodo));
     printf("Escriba un nombre: \n");
     fgets (P->nombre, 30, stdin); 
     printf ("La cadena leida es: \n %s",P->nombre);getch(); 
     P->sig=NULL;
i++; 
     while(!'\n'){ 
         struct nodo *Q; 
         Q=(struct nodo *)malloc(sizeof(struct nodo)); 
         fgets (Q->nombre, 30, stdin); 
        printf ("La cadena leida es: %s\n", Q->nombre);
getch();             
         Q->sig=P; 
         P=Q; 
     }
     }
}
}while(op!=5);
}

INSERTAR UN NODO EN UNA LISTA DOBLE ENLAZADA

#include <stdlib.h>
#include<stdio.h>
#include <string.h>

struct nodo {
char inf[30];
struct nodo *ligaizq;
struct nodo *ligader;
};
main (){
struct nodo *lista1;
struct nodo *lista2;
struct nodo *lista3;
struct nodo *lista4;

lista1=(struct nodo *) malloc (sizeof(struct nodo));
fgets(lista1->inf,30,stdin);
lista1->ligaizq=NULL;
lista1->ligader=NULL;
lista2=(struct nodo *) malloc (sizeof(struct nodo));
fgets(lista2->inf,30,stdin);
lista1->ligader=lista2;
lista2->ligaizq=lista1;
lista2->ligader=NULL;
lista3=(struct nodo *)malloc(sizeof(struct nodo));
fgets(lista3->inf,30,stdin);
lista2->ligader=lista3;
lista3->ligaizq=lista2;
lista3->ligader=NULL;
printf("Los nombres agregados inicialmente son: \n %s %s %s",lista1->inf,lista2->inf,lista3->inf);
printf("El nombre a desear es: ");
lista4=(struct nodo *)malloc(sizeof(struct nodo));
fgets(lista4->inf,30,stdin);
lista2->ligader=lista4;
lista4->ligaizq=lista3;
lista3->ligaizq=NULL;

printf("Los nombres agregados inicialmente son: \n %s %s %s %s",lista1->inf,lista2->inf,lista4->inf,lista3->inf);
}