Lista simplemente enlazada lenguaje c
#include <stdio.h>
#include <stdlib.h>
struct lista_elemen{ //se define una estructura con 1 argumento
int elem;
struct lista_elemen *sig; //puntero el nuevo nodo
};
typedef struct lista_elemen nodo; //se define un tipo de estructura llamado nodo
main(){
nodo *crear(nodo *registro); //firmavoid mostrar(nodo *registro); //firma
nodo *insertar(nodo *registro); //firma
nodo *borrar(nodo *registro); //firma
int menu(void); //firma
nodo *prin; //se declara un puntero de tipo nodo
int op;
do{
op=menu();
switch(op){
case 1:
prin=(nodo*)malloc(sizeof(nodo)); //se separa memoria para el nuevo nodo sila opcion es 1
prin=crear(prin); //se llama a la funcion crear para introducir los datos del nuevo nodo creado
printf("\n");
printf("la lista es: ");
mostrar(prin);//se muestra el nuevo nodo creado
getch();
continue;case 2:
prin=insertar(prin); //manda la direccion del principio de la lista a insertar, le devuelve la lista actualizada
printf("\n");
printf("la lista es: ");
mostrar(prin); //muestra la lista actualizada
getch();
continue;case 3:
prin=borrar(prin); //manda la direccion del principio de la lista, le devuelve la lista actualizada
printf("\n");
printf("la lista es: ");
mostrar(prin);
getch();
continue;
case 4:printf("la lista es: ");
mostrar(prin);
getch();
default:
printf("fin del programa\n");
}
}while(op != 5);
getch();
}
int menu(void){
int opcion;
do{system("cls");
printf("=======================\n");
printf("|---MENU PRINCIPAL----|\n");
printf("|=====================|\n");
printf("| 1. Crear Lista |\n");
printf("| 2. Añadir Elemento |\n");
printf("| 3. Borrar Elemento |\n");
printf("| 4. Mostrar Lista |\n");
printf("| 5. Salir |\n");
printf("=======================\n");printf("Introduzca su Opcion: ");
scanf("%d",&opcion);
if(opcion < 1 || opcion >5)
printf("\nOpcion no Valida. \n");
}while(opcion < 1 || opcion > 5);
printf("\n");
return(opcion);
}
nodo *crear(nodo *registro){ //crea un nuevo nodo con sus datos
printf("Dato (presionar '0' para terminar): ");
scanf("%d",®istro->elem); //guarda un valor
if(registro->elem==0) //compara si el nuevo valor y 0 son los mismos o no
registro->sig=NULL; /*si los valores son iguales, registro->sig sera NULL, para que
termine de ingresar datos y finalizar la lista*/
else{
registro->sig = (nodo *)malloc(sizeof(nodo)); //si no es 0 separa memoria para el nuevo nodocrear(registro->sig); //como no es 0 manda la direccion de memoria del nuevo nodo para seguir ingresando datos
}
return(registro);
}
void mostrar(nodo *registro){ //funcion recursiva que muestra la lista actual
if(registro->sig != NULL){ /*si el puntero al nuevo nodo no esta vacio entonces imprimir
ese valor de lo contrario termina la funcion*/...
Regístrate para leer el documento completo.