#include<stdio.h>
#include<conio.h>
#include "carga_lectura.h"
int lista_vacia(struct lista *);
struct lista* lista_lena();
struct lista* insertar(struct lista *, struct dato);
void listar(struct lista *);
struct lista* eliminar(struct lista *q, int nl);
void main() {
struct dato x;
struct lista *p=NULL;
FILE *arch;
if(lista_vacia(p)) {
printf("La lista esta vacia");
}
/* CARGA DE LOS DATOS */
p = insertar(p,x);
listar(p);
p = eliminar(p, x.leg);
fclose(arch);
printf("Presione una tecla para salir");
getch();
}
int lista_vacia(struct lista *q) {
if(q = NULL) {
return 1;
} else {
return 0;
}
}
struct lista* insertar(struct lista *q, struct dato d) {
struct lista *nuevo, *ant=q, *act=q;
if((nuevo=lista_llena())==NULL) {
printf("Lista llena");
} else {
nuevo->d = d;
nuevo->sig = NULL;
if(lista_vacia(q)) q = nuevo;
else {
while(act && act->d.leg < d.leg) {
ant=act;
act=act->sig;
}
if(ant==act) {
nuevo->sig = q;
q = nuevo;
} else {
ant->sig=nuevo;
nuevo->sig=act;
}
}
}
return (q);
}
struct lista * lista_lena() {
struct lista *q;
q = (struct lista *)malloc(sizeof(struct lista));
return q;
}
void listar(struct lista *q) {
if(lista_vacia(q)) {
printf("Lista vacia");
} else {
while(q) {
printf("%5d %-40s %10.2f \n", q->d.leg, q->d.apyn, q->d.prom);
q = q->sig;
}
}
}
struct lista* eliminar(struct lista *q, int nl) {
struct lista *ant=q, *act=q;
if(lista_vacia(q)) {
printf("Lista vacia");
} else {
while(act && nl > act->d.sig) {
ant = act;
act = act->sig;
}
if((act==NULL)||(act->d.leg !=nl)) {
printf("No encontrado");
} else {
if(ant==act) {
q=act->sig;
} else {
ant->sig=act->sig;
}
free(act);
}
}
return (q);
}