Buscador de Informacion, Ciencia y Tecnologia.

EJEMPLO DE UNA LISTA TURBO C++

 

 

 

 

 

 

 

 

 

 

/****************************************************************************

Nombre: LISTA.C
Utilidad: Muestra el uso de una lista para la gestión dinámica de la memoria.
Autor: Sergio Pacho
Fecha: 17 de septiembre de 1998

Este programa es un ejemplo sobre la utilización de una lista enlazada para
la gestión dinámica de la memoria.

 

****************************************************************************/

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

void insertar(void);
void extraer(void);
void visualizar(void);

struct lista
{
int num;
struct lista *sig;
}*CAB=NULL,*AUX=NULL,*F=NULL,*P=NULL;

main() /* Rellenar, extraer y visualizar */
{
char opc;
do
{
clrscr( );
gotoxy(30,8);
printf("1.- Insertar");
gotoxy(30,10);
printf("2.- Extraer");
gotoxy(30,12);
printf("3.- Visualizar la lista");
gotoxy(30,14);
printf("4.- Salir");
opc=getch( );
switch(opc)
{
case '1':
insertar( );
break;
case '2':
extraer( );
break;
case '3':
visualizar( );
}
}while (opc!='4');
}

/* A continuaci¢n insertaremos el elemento que
vamos a crear en la posici¢n que le corresponda,
teniendo en cuenta que la lista deber quedar
ordenada de menor a mayor.El puntero P comprueba
si el campo num de un elemento es menor que el
campo num del elemento introducido.El puntero
F se quedar apuntando al elemento de la posici¢n
anterior al elemento que hemos insertado */

void insertar(void)
{
AUX=(struct lista *)malloc(sizeof(struct lista));
clrscr( );
printf("Introduce un n£mero: ");
scanf("%d",&AUX->num);
AUX->sig=NULL;
if (CAB==NULL)
CAB=AUX;
else if (CAB->num > AUX->num)
{
AUX->sig=CAB;
CAB=AUX;
}
else
{
P=F=CAB;
while (P->num < AUX->num && P!=NULL)
{
if (P==CAB) P=P->sig;
else
{
P=P->sig;
F=F->sig;
}
}
AUX->sig=F->sig;
F->sig=AUX;
}
}

void extraer(void)
{
int var;
if (CAB==NULL) return;
clrscr( );
printf("Introduce el n£mero a extraer: ");
scanf("%d",&var);
if (CAB->num==var)
{
P=CAB;
CAB=CAB->sig;
free(P);
}
else
{
P=F=CAB;
while (P->num != var && P!=NULL)
{
if (P==CAB) P=P->sig;
else
{
P=P->sig;
F=F->sig;
}
}
if (P==NULL) return;
F->sig=P->sig;
free(P);
}
}

void visualizar(void)
{
if (CAB==NULL) return;
clrscr( );
AUX=CAB;
while (AUX!=NULL)
{
printf("N£mero: %d\n",AUX->num);
AUX=AUX->sig;
}
getch( );
}

 

Véase También:

Estructura de Datos lo que necesitas saber...

Ejemplo de una Estructura, Inicia en el Mundo de la Estructura de Datos

Ejemplo de una lista en Turbo C++ 3.0

Una lista Simplemente Enlazada, no es muy simple pero ayuda...

Una Lista Doblemente Enlazada corriendo en Turbo C++

Libros y sitios online recomendados excelentes para Aprender C++ y Estructura de Datos

0 comentarios: