Logo elrincondelc.com
curso de programación en c
Foros de programación en C
Inicio :: Código fuente

Valoración
0

LISTAS ENLASADAS SUPER SENCILLAS

codigo enviada por: inspiron9400
ESTE ES UN CODIGO A TRAVES DE EL CUAL PODEMOS ENTENDER LA DINAMICA DE LAS LISTAS ENLASADAS.
POSTEADO POR:
JUAN JOSE CASTRO.
UNIVERSIDAD DE LA GUAJIRA
RIOHACHA LA GUAJIRA
COLOMBIA
****QUE VIVA EL SILVESTRISMO****
//Lista sencilla
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<alloc.h>

typedef struct nodo{
int info;
struct nodo *sig;
};

struct nodo *CAB=NULL, *AUX=NULL, *P=NULL;
int valor;
void insertar(void);
void mostrar(void);
void insertarc(void);
void buscar(void);
void ordenar(void);
void insertad(void);
void submenu (void);
void insertara(void);
void eliminar(void);
void elimina(void);
void eliminap(void);
void eliminau(void);
void elimina_a(void);
void elimina_d(void);
void invertir(void);

void main(){
clrscr();
char op;
do{
 clrscr();
 gotoxy(31,4);printf("--MENU PRINCIPAL--");
 gotoxy(30,6);printf("1.Insertar ");
 gotoxy(30,7);printf("2.Eliminar "); 
 gotoxy(30,8);printf("3.Buscar elemento");
 gotoxy(30,9);printf("4.Ordenar la lista");
 gotoxy(30,10);printf("5.Mostrar");
 gotoxy(30,11);printf("6.Invertir la lista");
 gotoxy(30,12);printf("0.Salir");
 gotoxy(30,14);printf("Escoja una opcion ");
 op=getch();
 clrscr();
 switch(op){
  case '1':submenu(); break;
  case '2':eliminar(); break;
  case '3':buscar(); break;
  case '4':ordenar(); break;
  case '5':mostrar(); break;
  case '6':invertir();break;
 }
 }while(op!='0');
gotoxy(29,9);printf("!!GRACIAS USUARIO!!");
gotoxy(30,11);printf("-Cod 2722071047-");
getch();
}//fin del main

void submenu (void){
int opc;
do{
 clrscr();
 gotoxy(33,5);printf("--INSERTAR--");
 gotoxy(30,7);printf("1.Insertar al final");
 gotoxy(30,8);printf("2.Insertar al comienzo");
 gotoxy(30,9);printf("3.Insertar antes de");
 gotoxy(30,10);printf("4.Insertar despues de");
 gotoxy(30,11);printf("0.Volver al menu principal...");
 gotoxy(30,13);printf("Digite una opcion ");
 opc=getch();
 clrscr();
 switch(opc){
  case '1':insertar(); break;
  case '2':insertarc(); break;
  case '3':insertara(); break;
  case '4':insertad(); break;  
 }
 }while(opc!='0');
}//fin de submenu

void insertar(void){
AUX=new(nodo);
clrscr();
gotoxy(30,5); printf("Numero a insertar ") ;
scanf("%d", &AUX->info);
clrscr();
AUX->sig=NULL;
if(CAB==NULL){
 CAB=AUX;
 }
else{
 P=CAB;
 while(P->sig!=NULL){
 P=P->sig;
 }
 P->sig=AUX;
 }
}//fin de insertar

void insertarc(void){
AUX=new(nodo);
gotoxy(30,5); printf("Numero a insertar ") ;
scanf("%d", &AUX->info);
clrscr();
AUX->sig=NULL;
if(CAB!=NULL){
AUX->sig=CAB;
}
CAB=AUX;
}//fin insertarc


void insertara(void){
struct nodo *Q, *T;
int x, sw;
if(CAB==NULL){
 gotoxy(28,5);printf("¡¡Lista vacia!!...");
 getch();
 }
else{
 AUX=CAB;
 sw=1;
 gotoxy(30,5);printf("Insertar antes de...");
 scanf("%d",&x);
 while((AUX->info!=x)&&(sw==1)&&(AUX!=NULL)){
  if(AUX->sig!=NULL){
  T=AUX;
  AUX=AUX->sig;
  }
  else {
  sw=0;
  }
 }

 if(sw==0){
 gotoxy(28,7);printf("¡¡%d no esta en la lista!!...", x);
 getch();
 }
 else{
 Q=new(nodo);
 gotoxy(30,7); printf("Numero a insertar ") ;
 scanf("%d", &Q->info);
 clrscr();
 if(CAB==AUX){
 Q->sig=CAB;
 CAB=Q;         
 }
 else{
 T->sig=Q;
 Q->sig=AUX;
 }

 gotoxy(30,8); printf("¡¡Ha sido insertado!!") ;
 getch();
 }
}
}//fin de insertara

void insertad(void){
struct nodo *Q;
int x;
if(CAB==NULL)
 {
 gotoxy(28,5);printf("¡¡Lista vacia!!...");
 getch();
 }
else
{
 AUX=CAB;
 gotoxy(30,5);printf("Insertar despues de...");
 scanf("%d",&x);
 while((AUX->info!=x)&&(AUX!=NULL)){
 AUX=AUX->sig;
 }
 if(AUX==NULL){
 gotoxy(28,7);printf("¡¡%d no esta en la lista!!...", x);
 getch();
 }
 else{
 Q=new(nodo);
 gotoxy(30,7); printf("Numero a insertar ") ;
 scanf("%d", &Q->info);
 clrscr();
 Q->sig=AUX->sig;
 AUX->sig=Q;
 gotoxy(30,8); printf("¡¡Ha sido insertado!!") ;
 getch();
 }
}
}//fin de insertad


void eliminar(void){
int opc;
do{
clrscr();
gotoxy(33,5);printf("--ELIMINAR--");
gotoxy(30,7);printf("1.Eliminar el elemento");
gotoxy(30,8);printf("2.Eliminar el primer elemento");
gotoxy(30,9);printf("3.Eliminar el ultimo elemento");
gotoxy(30,10);printf("4.Eliminar antes de");
gotoxy(30,11);printf("5.Eliminar despues de");
gotoxy(30,12);printf("0.Volver al menu principal...");
gotoxy(30,14);printf("Digite una opcion ");
opc=getch();
clrscr();
switch(opc){
 case '1':elimina(); break;
 case '2':eliminap(); break;
 case '3':eliminau(); break;
 case '4':elimina_a(); break;
 case '5':elimina_d(); break;
 }
 }while(opc!='0');
}//fin de eliminar


void elimina(void){
int x, sw=1;
if(CAB==NULL)
 {
 gotoxy(28,5);printf("¡¡Lista vacia!!...");
 getch();
 }
else
{
 gotoxy(30,5),printf("Eliminar el elemento...");
 scanf("%d", &x);
 P=CAB;
 while(((P->info)!=x)&&(sw==1)){
 if((P->sig)!=NULL){
  AUX=P;
  P=P->sig;
  }
  else{
  sw=0;
  }
 }
 if(sw==0){
 gotoxy(28,7);printf("¡¡%d no esta en la lista!!...", x);
 getch();
 }
 else{
  if(P==CAB){
   CAB=CAB->sig;
  }
  else{
   AUX->sig=P->sig;
  }
  free(P);
  gotoxy(30,7);printf("%d ha sido eliminado", x);
  getch();
  }
  }
} //fin de elimina

void eliminap(void){
if(CAB==NULL)
 {
 gotoxy(28,5);printf("¡¡Lista vacia!!...");
 getch();
 }
 else{
  P=CAB;
  gotoxy(30,5);printf("%d ha sido eliminado", P->info);
  getch();
  if(P->sig==NULL){
   CAB=NULL;
  }
  else{
   CAB=CAB->sig;
  }
  free(P);
  }
}// fin de eliminap

void eliminau(void){
if(CAB==NULL)
 {
 gotoxy(28,5);printf("¡¡Lista vacia!!...");
 getch();
 }
 else{
  P=CAB;
  if(P->sig==NULL){
   CAB=NULL;
   }
  else{
   while(P->sig!=NULL){
     AUX=P;
     P=P->sig;
   }
   AUX->sig=NULL;
   }
   gotoxy(30,5);printf("%d ha sido eliminado", P->info);
   getch();
   free(P);
 }
}//fin de eliminu

void elimina_a(void){
struct nodo *Q;
int x;
if(CAB==NULL)
 {
 gotoxy(28,5);printf("¡¡Lista vacia!!...");
 getch();
 }
 else{
 gotoxy(30,5);printf("Eliminar antes de...");
 scanf("%d",&x);
 if(CAB->info==x){
   gotoxy(26,7);printf("¡¡No existen elementos antes de %d!!", x);
   getch();
   return;
 }
 else{
  Q=CAB;
  AUX=CAB;
  P=CAB;
  while((Q!=NULL)&&(Q->info!=x)){
   P=AUX;
   AUX=Q;
   Q=Q->sig;
  }
  if(Q==NULL){
   gotoxy(28,7);printf("¡¡%d no esta en la lista!!...", x);
   getch();
  }
  else{
   P->sig=Q;
   gotoxy(30,7);printf("%d ha sido eliminado", AUX->info);
   getch();
   free(AUX);
  }
  }
 }
 }//fin de elimina_a

void elimina_d(void){
int x, sw=1;
if(CAB==NULL)
 {
 gotoxy(28,5);printf("¡¡Lista vacia!!...");
 getch();
 }
else{
 gotoxy(30,5);printf("Eliminar despues de...");
 scanf("%d",&x);
 P=CAB;
 while((sw==1)&&(P->info!=x)){
  if(P->sig!=NULL){
   P=P->sig;
   }
   else{
   sw=0;
   }
 }//fin del while
 if(P->info!=x){
 gotoxy(28,7);printf("¡¡%d no esta en la lista!!...", x);
 getch();
 return;
 }
 if(P->sig==NULL){
 gotoxy(26,7);printf("¡¡No existen elementos después de %d!!" , x);
 getch();
 }
 else{
 AUX=P->sig;
 P->sig=AUX->sig;
 AUX->sig=NULL;
 gotoxy(29,7);printf("%d ha sido eliminado " , AUX->info);
 getch();
 free(AUX);
 }
}//fin del else
}


void buscar(void){
int x;
if(CAB==NULL) {
 gotoxy(28,5);printf("¡¡Lista vacia!!...");
 getch();
 }
 else{
  AUX=CAB;
 gotoxy(38,5);printf("--BUSQUEDA--");
 gotoxy(30,7);printf("Digite el elememto a buscar...");
 scanf("%d", &x);
 while((AUX->info!=x)&&(AUX!=NULL)){
 AUX=AUX->sig;
 }
 if(AUX==NULL){
 gotoxy(31,9);printf("¡¡%d no esta en la lista!!...", x);
 getch();
 }
 else{
 gotoxy(33,9);printf("%d esta en la lista...", x);
 getch();
 }
 }
 } //fin de buscar

void ordenar(void){
int temp;
if(CAB==NULL) {
 gotoxy(28,5);printf("¡¡Lista vacia!!...");
 getch();
 }
 else
 {
 AUX=CAB;
 while(AUX->sig!=NULL) {
 P=AUX->sig;
  while(P!=NULL) {
      if((AUX->info)>(P->info)){
        temp=AUX->info;
        AUX->info=P->info;
        P->info=temp;
      }

      P=P->sig;       
    }
   AUX=AUX->sig;
   }
 gotoxy(28,5);printf("¡¡La lista ha sido ordenada!!...");
 getch();
 }
}//fin de ordenar

void mostrar(void){
int i=1;
if(CAB==NULL) {
 gotoxy(28,5);printf("¡¡Lista vacia!!...");
 getchar();
 return;
 }
 AUX=CAB;
gotoxy(30,5);printf("Contenido de la lista");
while(AUX!=NULL){
 gotoxy(30+i+i,7);printf("%dt",AUX->info);
  AUX=AUX->sig;
  i++;
 }
 getch();
}//fin de mostrar



void invertir(void)
{
struct nodo *Q, *R;
if(CAB==NULL) {
 gotoxy(28,5);printf("¡¡Lista vacia!!...");
 }
 else{
 P=CAB;
 Q=P->sig;
 R=Q->sig;
 while(Q!=NULL)
 {
  Q->sig=P;
  P=Q;
  Q=R;
  R=R->sig;
 }
 CAB->sig=NULL;
 CAB=P;
 gotoxy(28,5);printf("¡¡La lista ha sido invertida!!...");
 }
 getch();
 
}
Buen còdigo puede ud dejar un correo de contacto que viva el vallenato...¡¡¡
(joamedu 2011-11-12 22:43:33)

Para enviar comentarios debes estar registrado.

(c) ElRincondelC.com

Un proyecto de Urlan Heat : proyectos de Internet y soporte para el comercio electrónico.