#include<stdio.h>
#include<windows.h>
//Declaración de funciones prototipo
void inicializar();
void ingresar();
void visualizar();
int borrar(void);
int vacia();
//Declaración del cuerpo de la estructura
typedef struct datos nodo;
struct datos
{
char nombre[100];
int matricula;
nodo*siguiente;
}
*n, *primero, *ultimo;
int nodos = 0;
//Declaración de función principal main()
void main()
{
int opcion;
inicializar();
do
{
system("CLS");
printf("Binvenido, elige una opcion:\n");
printf("1. Ingresar datos a la fila\n");
printf("2. Visualizar la fila\n");
printf("3. Busqueda de Datos\n");
printf("4. Salir");
scanf_s("%i", &opcion);
if (opcion == 1)
ingresar();
if (opcion == 2)
visualizar();
if (opcion == 3)
borrar();
if (opcion == 4)
break;
}
while (opcion > 0);
system("PAUSE");
return;
}
//Declaración de funciones para operaciones
void inicializar()
{
n = primero = ultimo = NULL;
return;
}
int vacia()
{
if (primero == NULL)
return 1;
else
return 0;
}
void ingresar()
{
if (vacia())
{
n = (nodo*)malloc(sizeof(nodo));
primero = ultimo = n;
printf("Ingresa el nombre:");
scanf("%s", &n->nombre);
printf("Ingresa la matrícula:");
scanf("%i", &n->matricula);
n->siguiente = NULL;
nodos++;
}
else
{
n = (nodo*)malloc(sizeof(nodo));
printf("Ingresa el nombre:");
scanf("%s", &n->nombre);
printf("Ingresa la matrícula:");
scanf("%i", &n->matricula);
ultimo->siguiente = n;
n->siguiente = NULL;
ultimo = n;
nodos++;
}
return;
}
void visualizar()
{
int i;
if (vacia())
{
printf("Pila vacia");
system("PAUSE");
return;
}
else
{
n = primero;
for (i = 0; i<nodos; i++)
{
printf("%i.%s-%i\n", i + 1, n->nombre, n->matricula);
n = n->siguiente;
}
system("PAUSE");
}
return;
}
int borrar(void) /*Esta función "desecha" el último elemento introducido*/
{
datos* ultimo;
if(ultimo==NULL)
{
printf("Pila vacia");
system("PAUSE");
return NULL ;
}
}
Luis