miércoles, 19 de septiembre de 2018

Insertar un nodo en una lista doblemente enlazada


#include <stdio.h>
#include <stdlib.h>
struct nodo{
struct nodo *ligader;
char inf[30];
struct nodo *ligaizq;
struct nodo *sig;
};
main(){
struct nodo *a, *b, *c, *d,*aps;
char n[30];
a=(struct nodo *)malloc(sizeof(struct nodo));
fgets(a->inf,30,stdin);
a->ligaizq=NULL;
a->ligader=b;
b=(struct nodo *)malloc(sizeof(struct nodo));
fgets(b->inf,30,stdin);
b->ligaizq=a;
b->ligader=c;
c=(struct nodo *)malloc(sizeof(struct nodo));
fgets(c->inf,30,stdin);
c->ligaizq=b;
c->ligader=NULL;
printf("que nombre desea agregar: \n");
 
d=(struct nodo *)malloc(sizeof(struct nodo));
fgets(d->inf,30,stdin);
d->ligaizq=c;
d->ligader=NULL;
printf("La lista es: \n ");
printf("%s %s %s %s", a->inf, b->inf, d->inf,c->inf);
}

miércoles, 12 de septiembre de 2018




creacion de una lista 


#include<iostream>
#include<stdlib.h>
struct nodo{
    int inf;
    struct nodo *sig;
};
main(){
    struct nodo *cabe;
    struct nodo *nuevo;
    struct nodo *aux;
    cabe=NULL;
    int dato;
    int cant, i=1, cont;
    printf("Entrar cantidad de nodos: \n");
scanf("%d",&cant); 
    while(i<=cant){
    nuevo=(struct nodo *)malloc(sizeof(struct nodo));
        nuevo->sig=cabe;
    printf("Entre dato: \n");
        scanf("%d",&dato);
        nuevo->inf=dato;
        cabe=nuevo;
        i++;
    }
while(nuevo!=NULL){
        printf("\n DATO: %d \n", nuevo->inf);
        nuevo=nuevo->sig;
    }
}


eliminar información de un nodo dado 


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct nodo{
char inf;
struct nodo *sig;
};
main(){
struct nodo *p,*q,*t,*r;
char dato,eliminar;
p=(struct nodo *)malloc(sizeof(struct nodo ));
p->inf='a';
p->sig=NULL;
t=(struct nodo *)malloc(sizeof(struct nodo ));
t->inf='b';
t->sig=NULL;
r=(struct nodo *)malloc(sizeof(struct nodo ));
r->inf='c';
r->sig=NULL;
printf("cual quiere eliminar: %c %c %c \n",p->inf,t->inf,r->inf);
scanf("%c",&eliminar);
if(eliminar=='a'){
q=p;
if(p->sig==NULL){
delete (q);
}else{
p=p->sig;
delete (q);
}
printf("%c %c",t->inf,r->inf);
}else{
if(eliminar=='b'){
q=t;
if(p->sig==NULL){
delete (q);
}else{
p=p->sig;
delete (q);
}
printf("%c %c",p->inf,r->inf);
}else{
if(eliminar=='c'){
q=r;
if(p->sig==NULL){
delete (q);
}else{
p=p->sig;
delete (q);
}
printf("%c %c",p->inf,t->inf);
}
}
}
}



Taller 1


#include <stdlib.h>
#include <stdio.h>
int datos();

main(){
datos();
}
int datos(){
struct misdatos{
char nombre[20];
int codigo[20];
int semestre[20];
char materia[20];
struct estructuradedatos{
char fecha[20];
char tema[20];
};
}amigo;
struct estructuradedatos *p_estruc;
printf("Digite su nombre");
scanf("%c",amigo.nombre);
printf("\nDigite su codigo");
scanf("%d",amigo.codigo);
printf("\nDigite su semestre");
scanf("%d",amigo.semestre);
printf("\nDigite su materia");
scanf("%c",amigo.materia);

p_estruc=&estru;
printf("\nDigite la fecha");
scanf("%c",p->fecha);
}


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);
}


PILAS

#include <stdio.h>
#include <stdlib.h>
struct nodo{
char dato;
struct nodo *sig;
};

void agregarpila(nodo *&, char &);

void quitarpila(nodo *&,char &);

main(){
system("color f9");
nodo *pila=NULL;
int a,i=0,b=0;
char dato;
do{
printf("1. Agregar elementos a la pila  \n");
printf("2. Eliminar elementos de la pila \n");
printf("3. Salir \n");
scanf("%d",&a);
switch (a){
case 1: printf("digite una letra: ");
scanf("%s",&dato);
agregarpila(pila,dato);
break;
case 2: while (pila != NULL){
quitarpila(pila,dato);
}
break;
}
}while (a != 3);
}


void agregarpila(nodo *&pila, char &n){
nodo *nuevo_nodo= new nodo(); 
nuevo_nodo->dato=n;
nuevo_nodo->sig=pila;
pila=nuevo_nodo;
printf("El elemento %c ha sido agregado \n ",n);
}

void quitarpila(nodo *&pila, char &n){
nodo *aux = pila;
n=aux->dato;
pila=aux->sig;
delete aux;
printf("El elemento %c ha sido eliminado \n", n);
}

COLAS

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

struct nodo{
char dato;
struct nodo *sig;
};

void insertarcola(nodo *&, nodo *&, char&); 

bool colavacia(nodo *);

void scola(nodo *&,nodo *&, char&);

void insertarcola(nodo *&frente, nodo *&fin, char &n){
nodo *nuevo_nodo= new nodo();
nuevo_nodo->dato=n;
nuevo_nodo->sig=NULL;
if ( colavacia(frente) ) {
frente=nuevo_nodo;
}else{
fin->sig=nuevo_nodo;
}
fin=nuevo_nodo;
printf("El elemento %c fue agregado \n",n);
}


bool colavacia(nodo *frente){
return (frente==NULL)? true:false;
}

void scola(nodo *&frente, nodo*&fin, char &n){
n=frente->dato;
nodo *aux=frente;
if(frente==fin){
frente=NULL;
fin=NULL;
}else{
frente=frente->sig;
}
delete aux;
printf("El elemento %c fue eliminado \n",n);
}

main(){
system("color f9");
nodo *frente=NULL;
nodo *fin=NULL;
int a,i=0,b=0;
char dato;
do{
printf("1. Agregar elementos a la cola  \n");
printf("2. Eliminar elementos de la cola \n");
printf("3. Salir \n");
scanf("%d",&a);
switch (a){
case 1: printf("digite un letra: ");
scanf("%s",&dato);
insertarcola(frente,fin,dato);
break;
case 2: while (frente != NULL){
scola(frente,fin,dato);
}
}
}while (a != 3);
}

ÁRBOL

#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);
}
}

Insertar un nodo en una lista doblemente enlazada #include <stdio.h> #include <stdlib.h> struct nodo{ struct nodo *...