#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);
}
}
Lógica
lunes, 4 de marzo de 2019
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);
}
}
}
#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;
}
#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;
}
#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);
}
#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);
}
#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);
}
Suscribirse a:
Entradas (Atom)





