#include <iostream>
using namespace std;
#include <stdio.h>
#include <stdlib.h>
#define FALSE 0
#define TRUE 1
typedef int boolean;
boolean estaVacia();
typedef struct nodo{
int llave;
struct nodo * sig; /* auto referencia */
}nodoLista;
nodoLista * primero = NULL;
nodoLista * ultimo = NULL;
void insertarInicio();
void insertarFinal();
void mostrarLista();
void eliminarLista();
int main(void) {
setvbuf(stdout, NULL, _IONBF, 0);
int opcion;
do{
printf("\n\nMENU");
printf("\n0.- Salir");
printf("\n1.- Agregar un nodo al inicio");
printf("\n2.- Mostrar los valores de la lista");
printf("\n3.- Agregar un nodo al final");
printf("\n4.- Eliminar un elemento");
printf("\n\nDame tu opci�n");
scanf("%d", &opcion);
opcion=1;
switch(opcion){
case 0:
break;
case 1:
insertarInicio();
break;
case 2:
mostrarLista();
break;
case 3:
insertarFinal();
break;
case 4:
eliminarLista();
break;
}
} while (opcion != 0);
return EXIT_SUCCESS;
}
void insertarInicio(){
nodoLista * nuevo;
nuevo = (nodoLista *)malloc(sizeof(nodoLista));
printf("\n\nDame el valor de la llave");
scanf("%d", &nuevo->llave);
nuevo->sig = primero;
primero = nuevo;
if(primero->sig == NULL)
ultimo = primero;
}
void insertarFinal(){
if (estaVacia()){
insertarInicio();
return;
}
nodoLista * nuevo;
nuevo = (nodoLista *)malloc(sizeof(nodoLista));
printf("\n\nDame el valor de la llave");
scanf("%d", &nuevo->llave);
nuevo->sig = NULL;
ultimo->sig = nuevo;
ultimo = nuevo;
}
void mostrarLista(){
if (estaVacia()){
printf("\n\nLa lista est� vac�a");
return;
}
nodoLista * recorre = primero;
while (recorre != NULL){
printf("%d ", recorre->llave);
recorre = recorre->sig;
}
}
void eliminarLista(){
nodoLista* anterior;
nodoLista* actual;
nodoLista* siguiente;
nodoLista* recorre=primero;
int op;
printf("Cual es el entero a eliminar?");
scanf("%d", &op);
anterior=primero;
actual=primero;
siguiente=primero->sig;
while(recorre != NULL){
if(recorre->llave == op){
anterior->sig=siguiente;
free(actual);
}
else{}
anterior=recorre;
recorre = recorre->sig;
actual=recorre;
if(recorre != NULL){siguiente = recorre->sig;}
}
}
boolean estaVacia(){
if (primero == NULL)
return TRUE;
else
return FALSE;
}
No hay comentarios:
Publicar un comentario