[C con Clase] listas simples
felician draghici
felix1900toamna en yahoo.es
Mar Mar 26 20:21:00 CET 2013
Lo primero muchas gracias para tu respuesta Elois@, ya casi lo tengo acabado,me falta hacer la funcion para modificar.
El ejercicio queda asi , menos con la funcion de modificar numeros en la lista simple.Saludos y otra vez gracias
/*Ejercicio listas simples
-Insertar numeros en la lista
-Mostrar numeros de la lista
-Borrar
-Modificar
-Consultar */
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
struct Nodo{
int numero;
Nodo *sig;
};
int menu(void);
struct Nodo * inserta_elemento(struct Nodo *,int n);
struct Nodo * borra_elemento(struct Nodo *inicio);
struct Nodo * eliminar_lista(struct Nodo *);
struct Nodo * modifica_elemento(struct Nodo *inicio);
void consulta(struct Nodo *);
void listar_lista(struct Nodo *);
int main (void)
{
int opc,n;
Nodo *aux,*inicio,*actual;
inicio=NULL;
do
{
opc=menu();
switch(opc)
{
case 1:system("cls");
inicio=inserta_elemento(inicio,n);//insertar elemento
break;
case 2:system("cls");
inicio=borra_elemento(inicio);//borrar elemento
break;
case 3:system("cls");
inicio=eliminar_lista(inicio);//eliminar contenido lista
break;
case 4:system("cls");
inicio=modifica_elemento(inicio);//modificar numero en lista
break;
case 5:system("cls");
listar_lista(inicio);//listar lista
break;
case 6:system("cls");
consulta(inicio);//consultar elemento
break;
}
}while(opc != 7);
getch();
}
int menu(void)
{
int opcion;
system("cls");
printf("\n\n*** Teclee una opcion: \n\n\n");
printf("\n1) Insertar un elemento en la lista");
printf("\n2) Borrar elemento de la lista");
printf("\n3) Eliminar el contenido de la lista");
printf("\n4) Modificar un numero en la lista");
printf("\n5) Mostrar el contenido de la lista");
printf("\n6) Consulta de un numero en la lista");
printf("\n7) Salir del programa\n\n---> ");
scanf("%d",&opcion);
fflush(stdin);
return opcion;
}
struct Nodo* inserta_elemento(struct Nodo *inicio,int n)
{
struct Nodo *aux,*actual;
char seguir;
inicio=NULL;
printf("\n\t***Insertar numeros***\n");
do
{
printf("\nTeclea un numero: ");
scanf("%d",&n);
fflush(stdin);
if(n==0)
{
return inicio;
}
aux=new struct Nodo;
aux->numero=n;
aux->sig=NULL;
printf("%d",aux->numero);
if(inicio==NULL)
{
inicio=aux;
}
else
{
if(inicio->numero > n) // si el numero leido es < que el primero
{
aux->sig=inicio;
inicio=aux;
}
else
{
actual=inicio;
while(actual->sig!=NULL && actual->sig->numero < n)
{
actual=actual->sig;
}
aux->sig=actual->sig;
actual->sig=aux;
}
}
}while(n != -0);
}
//Funcion para borrar un numero de la lista
struct Nodo * borra_elemento(struct Nodo *inicio)
{
struct Nodo *actual;
int borra_num;
printf("\n\t***Borrar un elemento de la lista***");
if(inicio==NULL)
{
printf("\nNo hay numero para borrar ");
}
else
{
printf("\n\nIntroduce un numero a borrar: ");
scanf("%d",&borra_num);
fflush(stdin);
while(inicio!=NULL)
{
actual=inicio;
inicio=inicio->sig;
actual->sig=NULL;
if(borra_num == inicio->numero)
{
delete actual;
}
}
}
getch();
return inicio;
}
//Funcion para eliminar el contenido de la lista
struct Nodo * eliminar_lista(struct Nodo *inicio)
{
struct Nodo *actual;
printf("\n\t***Borrado completo de lista***\n");
if(inicio==NULL)
{
printf("\nLa lista esta vacia");
}
else
{
while(inicio!=NULL)
{
actual=inicio;
inicio=inicio->sig;
actual->sig=NULL;
delete actual;
}
printf("\nLa lista ha sido eliminada");
}
getch();
return inicio;
}
//Funcion para modificar elementos en la lista
struct Nodo * modifica_elemento(struct Nodo *inicio)
{
struct Nodo *actual;
getch();
return inicio;
}
//Funcion para consultar numeros en la lista
void consulta(struct Nodo *inicio)
{
struct Nodo *actual;
int num_cons;//numero que se quiere consultar
actual=inicio;
printf("\n\t***Consulta de numeros ***\n");
printf("\nIntroduce el numero a buscar: ");
scanf("%d",&num_cons);
fflush(stdin);
int encontrado=0;
if(inicio==NULL)
{
printf("\nNo hay numeros en la lista");
}
else
{
while(actual != NULL)
{
if(actual->numero == num_cons)
{
encontrado = 1;
}
actual=actual->sig;
}
}
if(inicio!=NULL)
{
if(encontrado==1)
{
printf("\nEl numero %d esta en la lista",num_cons);
}
else
{
printf("\nEl numero buscado no se encuentra en la lista");
}
}
getch();
}
//Funcion para mostrar todos los numeros de la lista
void listar_lista(struct Nodo *inicio)
{
struct Nodo *actual;
printf("\n\t***Listar lista***\n");
if(inicio == NULL)
{
printf("\nLa lista esta vacia");
}
else
{
actual=inicio;
printf("\nLos numeros de la lista son:\n");
while(actual != NULL)
{
printf("\n%d",actual->numero);
actual=actual->sig;
}
}
getch();
}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130326/87bb96c0/attachment.html>
Más información sobre la lista de distribución Cconclase