Anda di halaman 1dari 12

INSTITUTO POLITECNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERIA MECANICAY


ELECTRICA
UNIDAD ZACATENCO

ASIGNATURA:
ESTRUCTURAS Y BASES DE DATOS

PROFESORA:
CORTES HERNANDEZ LILIA

ALUMNOS:
JUAREZ PEREZ MIGUEL
RAMIREZ TAFOLLA JOSUE

GRUPO:
3CV4

“MANUAL DE TECNICO”
INSTITUTO POLITECNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERIA MECANICAY
ELECTRICA
UNIDAD ZACATENCO

INTRODUCCION AL PROGRAMA
Este programa realiza la pequeña función de explicar lo que es una lista enlazada
primero empezamos con la declaración de de funciones para inicializar el programa
con void margen, portada, descripciones y tema. Posteriormente el programa de
ejemplo que en este caso realiza la función de Guardar un dato entero, Borrarlo,
Modificarlo y Buscarlo la funciones para las listas enlazadas como
malloc(sizeof(struct dato)); y while(indice!=NULL); como lo muetra el algoritmo de
listas enlazadas:

Algoritmo:

Recorrido (Inicio, Info, Indice)

Apuntador ←- Inicio

Repetir mientras Apuntador ≠ Nill

Imprimir Info[Apuntador]

Apuntador ←- Indice[Apuntador]

Fin del ciclo

Salir

Diagrama:

2
INSTITUTO POLITECNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERIA MECANICAY
ELECTRICA
UNIDAD ZACATENCO

#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream.h>
#include<dos.h>
#include<iomanip.h>

void margen();
void portada();
void descripcion();
void tema();

struct dato
{
int x;
struct dato *sig;
};
struct dato *primero=NULL,*nuevo=NULL,*indice=NULL;
struct dato *asigna_memoria(void)
{
nuevo=(struct dato *)malloc(sizeof(struct dato));
if(nuevo==NULL)
{
cout<<"no hay espacio en Memoria";
return(nuevo);
}
if(primero==NULL)
primero=indice=nuevo;
else
{

3
INSTITUTO POLITECNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERIA MECANICAY
ELECTRICA
UNIDAD ZACATENCO

indice=primero;
while(indice->sig!=NULL)
indice=indice->sig;
indice->sig=nuevo;

indice=nuevo;
}
return(nuevo);
}
void intro_dato(void)
{
if(asigna_memoria()==NULL)return;
clrscr();
cout<<"Dame el dato (entero):";
cin>>indice->x;
indice->sig=NULL;
}
void lista_datos(void)
{
if(primero==NULL)
{
cout<<"LISTA VACIA";return;}
indice=primero;
do{
cout<<"\n\nDATO:"<<indice->x;
indice=indice->sig;
}while(indice!=NULL);
getch();clrscr();
}

struct dato *busca_dato(void)


{
int xdato;
//clrscr();
cout<<"Busqueda de un dato"<<endl<<endl;
cout<<"Dato a buscar: ";
cin>>xdato;
if(primero==NULL)
{ cout<<endl<<endl<<"\tLISTA VACIA!!!"; getch();return(NULL);}
indice=primero;
do{ 4

4
INSTITUTO POLITECNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERIA MECANICAY
ELECTRICA
UNIDAD ZACATENCO

if(xdato==indice->x)
{cout<<endl<<endl<<"El dato "<<indice->x<<" se encuentra en la lista";
return(indice);
getch();clrscr();
}
indice=indice->sig;
}while(indice!=NULL);
cout<<endl<<"No se encontro el dato "<<xdato<<" en lista";
return(NULL);
}
void borra(void)
{
struct dato *y;
cout<<endl<<"Borrado de un dato";
cout<<endl<<endl<<"Primero se verifica que se encuentre el dato";
y=busca_dato();
if(y==NULL)return;
cout<<endl<<"\tDato a borrar:"<<y->x;
indice=y;
if(y==primero)
{
primero=primero->sig; y->sig=NULL;
free(y); cout<<endl<<endl<<"\tEL DATO HA SIDO BORRADO DE LA LISTA";
getch();return;}
indice=primero;
while(indice->sig!=y)indice=indice->sig;
indice->sig=y->sig;free(y);
cout<<endl<<endl<<"\tSe borro el Dato";getch();clrscr();}

5
INSTITUTO POLITECNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERIA MECANICAY
ELECTRICA
UNIDAD ZACATENCO

void modificar_lista(void)
{
struct dato *z;

cout<<endl<<"\n\n\tModificaci¢n de un dato";
cout<<endl<<endl<<"Primero se verifica que se encuentre el dato";
cout<<endl<<endl;
z=busca_dato();
if(z==NULL)return;
cout<<endl<<endl<<"Dato a modificar:"<<z->x;
indice=z;
if(z==primero)
{
cout<<endl<<endl<<"\tIntroduce el nuevo dato:";cin>>indice->x;
cout<<endl<<endl<<"\tEL DATO HA SIDO MODIFICADO DE LA LISTA";
getch();return;}
indice=primero;
while(indice->sig!=z)indice=indice->sig;
indice=z;
cout<<endl<<endl<<"\tIntroduce el nuevo dato:";cin>>indice->x;
cout<<endl<<endl<<"EL DATO HA SIDO MODIFICADO DE LA LISTA ";
getch();clrscr();}

void main(void)
{
char opcion;
clrscr();
margen();portada();getchar();
clrscr();margen();descripcion();tema();getchar(); clrscr();
for(;;)
{
cout<<endl<<"\n\n@@@@Lista simplemente enlazada de enteros@@@"<<endl;
cout<<endl<<endl<<"a.-INTRODUCIR UN DATO EN LA LISTA"<<endl;
cout<<endl<<"b.-LISTAR LA LISTA"<<endl;
cout<<endl<<"c.-BUSCAR UN DATO"<<endl;
cout<<endl<<"d.-BORRAR UN DATO"<<endl;

6
cout<<endl<<"e.-MODIFICAR"<<endl;
cout<<endl<<"f.-SALIR"<<endl;

INSTITUTO POLITECNICO NACIONAL


ESCUELA SUPERIOR DE INGENIERIA MECANICAY
ELECTRICA
UNIDAD ZACATENCO

cout<<endl<<"\tOPCION:";
cin>>opcion;
switch(opcion)
{
case 'a' : intro_dato(); clrscr();break;
case 'b' : lista_datos();break;
case 'c' : busca_dato();getch();clrscr();break;
case 'd' : borra();getch();clrscr();break;
case 'e': modificar_lista();clrscr();break;
case 'f' : cout<<endl<<"FIN";getch();exit(0);
default:cout<<endl<<endl<<"Opci¢n incorrecta"<<endl<<endl<<"Presione cualquier tecla
para volver la men£";
clrscr();
getchar();
}
}
}

void portada()
{
gotoxy(23,7);
textcolor(30);
cprintf("INSTITUTO POLITECNICO NACIONAL");
gotoxy(15,12);
textcolor(26);
cprintf("ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA");
gotoxy(30,14);
textcolor(28);
cprintf("(UNIDAD ZACATENCO)");
gotoxy(20,18);
textcolor(3);
cprintf("MATERIA:");
gotoxy(29,20);
textcolor(75);

7
cprintf("ESTRUCTURAS Y BASES DE DATOS");
gotoxy(20,25);
textcolor(89);

INSTITUTO POLITECNICO NACIONAL


ESCUELA SUPERIOR DE INGENIERIA MECANICAY
ELECTRICA
UNIDAD ZACATENCO

cprintf("NOMBRE:RAMIREZ TAFOLLA JOSUE");


gotoxy(28,27);
cprintf("JUAREZ PEREZ MIGUEL");
gotoxy(20,30);
textcolor(26);
cprintf("PROFESOR:LILIA CORTEZ HERNANDEZ");
gotoxy(20,35);
textcolor(299);
cprintf("PROYECTO SOBRE.-LISTA SIMPLEMENTE ENLAZADA");
gotoxy(20,40);
textcolor(WHITE);
cprintf("GRUPO:3CV4");
gotoxy(20,45);
cprintf(" Presione......ENTER");
}

void margen()
{
int f=36,p=36;
for(int g=5;g<=78;g++)
{
gotoxy(g,5);
textcolor(p);
cprintf("");
gotoxy(g,48);
textcolor(p);
cprintf("");
delay(10);
}

8
for(int z=5;z<=48;z++)
{
gotoxy(4,z);
textcolor(f);

INSTITUTO POLITECNICO NACIONAL


ESCUELA SUPERIOR DE INGENIERIA MECANICAY
ELECTRICA
UNIDAD ZACATENCO

cprintf("");
gotoxy(79,z);
textcolor(f);
cprintf("");
delay(10);
}
}

void descripcion()
{
gotoxy(11,7);
textcolor(26);
cprintf(" DESCRIPCION:PROYECTO ");
gotoxy(9,10);
textcolor(30);

cprintf("MANEJO DE UNA LISTA SIMPLEMENTE ELAZADA DE \"n\" ENTEROS\n");

gotoxy(9,12);
textcolor(26);
cprintf("EXPLICAREMOS LO QUE ES UNA LISTA ENLASADA Y LO DEMOSTRAMOS CON
UN");
gotoxy(9,12);
textcolor(14);
cprintf("\nEJEMPLO QUE CONTIENE UN MENU EN DONDE CADA OPCION ES UNA
OPERACION ");
gotoxy(9,13);
textcolor(26);
cprintf("\n DE LISTAS ENLSADAS\n");
gotoxy(9,18);
textcolor(WHITE);
cprintf("\nLAS LISTA SiMPLEMENTE ENLAZADA \n");

9
INSTITUTO POLITECNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERIA MECANICAY
ELECTRICA
UNIDAD ZACATENCO

void tema()
{
gotoxy(6,19);
cprintf("\nUna lista enlazada es una de las estructuras de datos fundamentales,");
gotoxy(6,20);
cprintf("\ny puede ser usada para implementar otras estructuras de datos.");
gotoxy(6,21);
cprintf("\nConsiste en una secuencia de nodos, en los que se guardan campos");
gotoxy(6,22);
cprintf("\n de datos arbitrarios y una o dos referencias (punteros) al nodo");
gotoxy(6,23);
cprintf("anterior y/o posterior. El principal beneficio de las listas enlazadas");
gotoxy(6,24);
cprintf("respecto a los array convencionales es que el orden de los elementos");
gotoxy(6,25);
cprintf("enlazados puede ser diferente al orden de almacenamiento en la memoria,");
gotoxy(6,26);
cprintf("o el disco, permitiendo que el orden de recorrido de la lista sea");
gotoxy(6,27);
cprintf("diferente al de almacenamiento.");
gotoxy(6,28);
cprintf("\nListas simples enlazadas");
gotoxy(6,29);
cprintf("La lista enlazada básica es la lista enlazada simple la cual tiene un");
gotoxy(6,30);
cprintf("enlace por nodo. Este enlace apunta al siguiente nodo en la lista, o al");
gotoxy(6,31);
cprintf("valor NULL o a la lista vacía, si es el último nodo.\n");
gotoxy(6,32);
cprintf("Una lista enlazada simple contiene dos valores:el valor actual del nodo");
gotoxy(6,33);

10
cprintf("y un enlace al siguiente nodo.\n");
gotoxy(6,34);
cprintf("Una lista enlazada es un tipo de dato auto-referenciado porque contienen");
gotoxy(6,35);
cprintf("un puntero o link a otro dato del mismo tipo. Las listas enlazadas")

INSTITUTO POLITECNICO NACIONAL


ESCUELA SUPERIOR DE INGENIERIA MECANICAY
ELECTRICA
UNIDAD ZACATENCO

gotoxy(6,36);
cprintf("permiten inserciones y eliminación de nodos en cualquier punto de la ");
gotoxy(6,37);
cprintf("lista en tiempo constante (suponiendo que dicho punto está previamente");
gotoxy(6,38);
cprintf("identificado o localizado), pero no permiten un acceso aleatorio. Existen");
gotoxy(6,39);
cprintf("diferentes tipos de listas enlazadas: Lista Enlazadas Simples, Listas");
gotoxy(6,40);
cprintf("Doblemente Enlazadas, Listas Enlazadas Circulares y Listas Enlazadas");
gotoxy(6,41);
cprintf("Doblemente Circulares.n");
gotoxy(6,47);
cprintf("Presione ENTER para ver el ejemplo:\n");
}

11
12

Anda mungkin juga menyukai