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);
}
}
No hay comentarios:
Publicar un comentario