You are on page 1of 3

#include #include #include #include

<stdio.h> <conio.h> <stdlib.h> <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 continuacin insertaremos el elemento que vamos a crear en la posicin que le c orresponda, teniendo en cuenta que la lista deber quedar ordenada de menor a ma yor.El puntero P comprueba si el campo num de un elemento es menor que el campo num del elemento introducid o.El puntero F se quedar apuntando al elemento de la posicin anterior al element o que hemos insertado */ void insertar(void) { AUX=(struct lista *)malloc(sizeof(struct lista)); clrscr( ); printf("Introduce un nmero: "); 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 nmero 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("Nmero: %d\n",AUX->num); AUX=AUX->sig; } getch( ); }

You might also like