Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UNIVERSIDAD NACIONAL
“PEDRO RUÍZ GALLO”
FACFYM
ESCUELA PROFESIONAL DE INGENIERÍA EN
COMPUTACIÓN E INFORMÁTICA
“AÑO DE LA CONSOLIDACIÓN DEL MAR DE GRAU”
ASIGNATURA
TEMA
Lista Enlazada Circular Simple
PROFESOR
INTEGRANTES
INTRODUCCIÓN
3
4
MARCO TEÓRICO
Cab
Ventajas:
• Cada nodo de una lista circular es accesible desde cualquier otro nodo de
ella. Es decir, dado un nodo se puede recorrer toda la lista completa.
Desventajas:
4
5
ESTRUCTURAS UTILIZADAS:
Normalmente los tipos que se definen en las listas cerradas son las mismas
que las listas abiertas. Siendo el Nodo aquel que contiene la información que
va a ser guardada y al nodo puntero siguiente, el cual permitirá el avance de un
nodo a otro. Finalmente se crea una Lista la cual tiene a un total y a la
cabecera que contiene la información del nodo.
5
6
6
7
OPERACIONES:
Para todas las estructuras hemos implementado las siguientes operaciones
básicas:
INSERTAR
Inserta al Inicio
aux->info = P;
aux->sgte = NULL;
if(LP.cab==NULL){
LP.cab=aux;
aux->sgte = aux;
}else{
NodoProducto *temp;
temp=LP.cab;
while(temp->sgte!=LP.cab){
temp = temp->sgte;
}
temp->sgte = aux;
aux->sgte = LP.cab;
LP.cab=aux;
}
LP.total++;
}
7
8
Inserta al Final
aux->info = P;
aux->sgte = NULL;
if(LP.cab == NULL){
LP.cab = aux;
aux->sgte=aux;
}else{
NodoProducto *temp;
temp = LP.cab;
while(temp->sgte != LP.cab){
temp = temp->sgte;
}
temp->sgte = aux;
aux->sgte=LP.cab;
}
LP.total ++;
}
temp
total aux
info info
cab sgte
sgte info
sgte
8
9
Inserta en Posición
if(pos == LP.cab){
InsertarInicio(LP, P);
}
else{
if(pos->sgte == LP.cab){
InsertarFinal(LP, P);
}
else{
a_Pos=LP.cab;
while(a_Pos->sgte!=pos){
a_Pos=a_Pos->sgte;
}
aux->info = P;
aux->sgte = pos;
a_Pos->sgte=aux;
LP.total++;
}
}
}
a_Pos
total
info info
info
pos
sgte
aux
9
10
ELIMINAR
Elimina al Inicio
system("pause");
}
Elimina al Final
delete temp;
LP.total--;
10
11
Elimina en Posición
NodoProducto *aux;
if(pos==LP.cab){
EliminaInicio(LP);
}else
if(pos->sgte==LP.cab)
EliminaFinal(LP);
else{
aux=LP.cab;
while(aux->sgte!=pos){
aux=aux->sgte;
}
aux->sgte=pos->sgte;
delete pos;
LP.total--;
}
}
11
12
PRESENTAR
}
system("pause");
}
BUSCAR
void opBuscar(ListaProducto LP){
char cod[10];
NodoProducto *Pos;
cout<<"\n\tIngrese codigo del producto a buscar: ",cin>>
cod;
Pos=Buscar(LP,cod);
if (Pos !=NULL) {
Mostrar(Pos->info);
}
else {
cout <<"\n\tCodigo no Existe..\n"<<endl;
}
system("pause");
}
12
13
int band=0;
aux=LP.cab;
while(band==0){
if(strcmp(aux->info.codigo, cod) == 0){
return aux;
}
if(aux->sgte==LP.cab){
band=1;
}
aux=aux->sgte;
}
return NULL;
}
UTILIDADES DE LA LISTA:
Cada lista contiene al nodo cabecera (CAB), este a su vez los datos
pertenecientes a su estructura conocido también como INFO y al mismo tiempo
tiene un puntero siguiente (SGTE) de tipo nodo que es aquel que relaciona los
nodos o elementos.
13
14
EJEMPLO DESARROLLADO:
#include <iostream> //---------
#include <string.h>
using namespace std; struct Factura{
char DNIVendedor[10];
//********************************* char numFactura[10];
************* REGISTROS *********** char DNICliente[10];
//--------- char nombre[20];
struct Producto{ float montoTotal;
char codigo[10]; ListaProductoFactura LPF;
char descripcion[20]; };
int stock;
float precio; struct NodoFactura{
}; Factura info;
NodoFactura *sgte;
struct NodoProducto{ };
Producto info;
NodoProducto *sgte; struct ListaFactura{
}; int total;
NodoFactura *cab;
struct ListaProducto{ };
int total;
NodoProducto *cab; //---------
};
//--------- //*********************************
struct Vendedor{ ****** PRODUCTO ******************
char DNI[10];
char nombre[20]; //FUNCIONES BASICAS PRODUCTO ------
char telefono[10]; -------------
char direccion[20];
}; void Llenar(Producto &P){
cout <<"\n\t (*) Codigo: "; cin
struct NodoVendedor{ >> P.codigo;
Vendedor info; printf("\t (*) Descripcion: ");
NodoVendedor *sgte; fflush(stdin);
}; gets(P.descripcion);
cout <<"\t (*) Stock: "; cin >>
struct ListaVendedor{ P.stock;
int total; cout <<"\t (*) Precio: "; cin
NodoVendedor *cab; >> P.precio;
}; }
//---------
void Mostrar(Producto P){
struct ProductoFactura{ cout<<"\t (*) Codigo:
char codProducto[10]; "<<P.codigo<<endl;
int cantidad; cout<<"\t (*) Descripcion:
float subtotal; "<<P.descripcion<<endl;
}; cout<<"\t (*) Stock:
"<<P.stock<<endl;
struct NodoProductoFactura{ cout<<"\t (*) Precio:
ProductoFactura info; "<<P.precio<<endl;
NodoProductoFactura *sgte; }
};
//OPERACIONES DE LISTA PRODUCTO ---
struct ListaProductoFactura{
int total; void Inicializa(ListaProducto &LP){
NodoProductoFactura *cab; LP.total = 0;
}; LP.cab = NULL;
}
14
15
else{
void InsertarInicio(ListaProducto
&LP, Producto P){ if(pos->sgte == LP.cab){
NodoProducto* aux = new InsertarFinal(LP, P);
NodoProducto; }
else{
NodoProducto *aux = new
aux->info = P; NodoProducto;
aux->sgte = NULL; NodoProducto *a_Pos;
if(LP.cab==NULL){
LP.cab=aux; aux->info = P;
aux->sgte = aux; aux->sgte = NULL;
a_Pos=LP.cab;
}else{ while(a_Pos->sgte!=pos){
NodoProducto* temp; a_Pos=a_Pos->sgte;
}
temp = LP.cab; aux->sgte = pos;
while(temp->sgte!=LP.cab){ a_Pos->sgte=aux;
temp = temp->sgte; LP.total++;
} }
}
temp->sgte = aux; }
aux->sgte = LP.cab;
LP.cab=aux; void EliminaInicio(ListaProducto
&LP){
} NodoProducto *temp;
LP.total++; temp = LP.cab;
}
if(LP.total > 0){
void InsertarFinal(ListaProducto NodoProducto *aux;
&LP, Producto P){ aux=LP.cab;
NodoProducto *aux = new while(aux->sgte!=LP.cab){
NodoProducto; aux=aux->sgte;
NodoProducto *temp; }
aux->sgte=LP.cab->sgte;
aux->info = P; LP.cab=temp->sgte;
aux->sgte = NULL; delete temp;
LP.total--;
cout << "\n\t Producto
if(LP.cab == NULL){ eliminado\n" << endl;
LP.cab = aux; }else
aux->sgte=aux; cout << "\n\t Lista
}else{ Vacia\n" << endl;
temp = LP.cab;
system("pause");
while(temp->sgte != LP.cab){ }
temp = temp->sgte;
} void EliminaFinal(ListaProducto
temp->sgte = aux; &LP){
aux->sgte=LP.cab; NodoProducto *temp = LP.cab;
} NodoProducto *aux= LP.cab;
LP.total ++;
} if(LP.total > 0){
while(temp->sgte != LP.cab)
void InsertarPosicion(ListaProducto temp = temp->sgte;
&LP, Producto P, NodoProducto while(aux->sgte != temp)
*pos){ aux = aux->sgte;
aux->sgte=LP.cab;
if(pos == LP.cab){
InsertarInicio(LP, P); delete temp;
} LP.total--;
15
16
NodoProducto *Buscar(ListaProducto
cout << "\n\t Producto &LP, char cod[]){
Eliminado\n" << endl; NodoProducto *aux;
}else
cout << "\n\t Lista int band=0;
Vacia\n" << endl; aux=LP.cab;
system("pause"); while(band==0){
} if(strcmp(aux->info.codigo,
cod) == 0){
void EliminaPosicion(ListaProducto return aux;
&LP, NodoProducto *pos){ }
if(aux->sgte==LP.cab){
NodoProducto *aux; band=1;
}
if(pos==LP.cab){ aux=aux->sgte;
EliminaInicio(LP); }
}else return NULL;
if(pos->sgte==LP.cab) }
EliminaFinal(LP);
else{ //*********************************
aux=LP.cab; ************* VENDEDOR ***********
while(aux->sgte!=pos){
aux=aux->sgte; //FUNCIONES BASICAS VENDEDOR ------
} ------------------
aux->sgte=pos->sgte;
delete pos; void Llenar(Vendedor &V){
LP.total--; cout <<"\n\t (*) DNI: "; cin
} >> V.DNI;
} printf("\t (*) Nombre: ");
fflush(stdin);
void Presenta(ListaProducto LP){ gets(V.nombre);
NodoProducto *aux; cout <<"\t (*) Telefono: ";
int i=1; cin >> V.telefono;
if(LP.cab==NULL){ printf("\t (*) Direccion: ");
cout << "\n\tLista Vacia. fflush(stdin);
\n"<< endl; gets(V.direccion);
}else{ }
int band=0;
aux=LP.cab; void Mostrar(Vendedor V){
while(band==0){ cout<<"\t (*) DNI:
cout<<"\n\t------------ "<<V.DNI<<endl;
---------------------"<<endl; cout<<"\t (*) Nombre:
cout << "\tPRODUCTO "<<V.nombre<<endl;
NRO: "<<i+1<<endl; cout<<"\t (*) Telefono:
cout<<"\t-------------- "<<V.telefono<<endl;
-------------------"<<endl; cout<<"\t (*) Direccion:
Mostrar(aux->info); "<<V.direccion<<endl;
cout<<"\t-------------- }
-------------------"<<endl;
if(aux->sgte==LP.cab){ //OPERACIONES DE LISTA VENDEDOR ---
band=1; -------------------
}
aux=aux->sgte; void Inicializa(ListaVendedor &Lv){
} Lv.total = 0;
Lv.cab = NULL;
} }
system("pause");
} void InsertarInicio(ListaVendedor
&Lv, Vendedor V){
NodoVendedor* aux = new
NodoVendedor;
16
17
InsertarFinal(Lv, V);
}
aux->info = V; else{
aux->sgte = NULL;
if(Lv.cab==NULL){ NodoVendedor *aux = new
Lv.cab=aux; NodoVendedor;
aux->sgte = aux; NodoVendedor *a_Pos;
}else{ aux->info = V;
NodoVendedor* temp; aux->sgte = NULL;
a_Pos=Lv.cab;
temp=Lv.cab; while(a_Pos->sgte!=pos){
while(temp- a_Pos=a_Pos->sgte;
>sgte!=Lv.cab){ }
temp = temp->sgte; aux->sgte = pos;
} a_Pos->sgte=aux;
Lv.total++;
temp->sgte = aux; }
aux->sgte = Lv.cab; }
Lv.cab=aux; }
} void EliminaInicio(ListaVendedor
Lv.total++; &Lv){
} NodoVendedor *temp;
temp=Lv.cab;
void InsertarFinal(ListaVendedor
&Lv, Vendedor V){ if(Lv.total > 0){
NodoVendedor *aux = new NodoVendedor *aux;
NodoVendedor; aux=Lv.cab;
NodoVendedor *temp; while(aux->sgte!=Lv.cab){
aux=aux->sgte;
aux->info = V; }
aux->sgte = NULL; aux->sgte=Lv.cab->sgte;
Lv.cab=temp->sgte;
delete temp;
if(Lv.cab == NULL){ Lv.total--;
Lv.cab = aux; cout << "\n\tVendedor
aux->sgte=aux; eliminado\n" << endl;
}else{ }else
temp = Lv.cab; cout << "\n\tLista Vacia\n"
<< endl;
while(temp->sgte !=
Lv.cab){ system("pause");
temp = temp->sgte; }
}
temp->sgte = aux; void EliminaFinal(ListaVendedor
aux->sgte=Lv.cab; &Lv){
} NodoVendedor *temp = Lv.cab;
Lv.total ++; NodoVendedor *aux= Lv.cab;
}
if(Lv.total > 0){
void InsertarPosicion(ListaVendedor while(temp->sgte != Lv.cab)
&Lv, Vendedor V, NodoVendedor temp = temp->sgte;
*pos){ while(aux->sgte != temp)
aux = aux->sgte;
if(pos == Lv.cab){ aux->sgte=Lv.cab;
InsertarInicio(Lv, V);
} delete temp;
else{ Lv.total--;
if(pos->sgte == Lv.cab){
17
18
LPF.cab = aux;
void Mostrar(ProductoFactura PF){ aux->sgte=aux;
cout<<"\t (*) Codigo de }else{
Producto: "<<PF.codProducto<<endl; temp = LPF.cab;
cout<<"\t (*) Cantidad:
"<<PF.cantidad<<endl; while(temp->sgte !=
cout<<"\t (*) Subtotal: LPF.cab){
"<<PF.subtotal<<endl; temp = temp->sgte;
} }
temp->sgte = aux;
//OPERACIONES DE LISTA aux->sgte=LPF.cab;
PRODUCTOFACTURA----------------- }
void LPF.total ++;
Inicializa(ListaProductoFactura }
&LPF){
LPF.total = 0; void
LPF.cab = NULL; InsertarPosicion(ListaProductoFactu
} ra &LPF, ProductoFactura PF,
NodoProductoFactura *pos){
void
InsertarInicio(ListaProductoFactura if(pos == LPF.cab){
&LPF, ProductoFactura PF){ InsertarInicio(LPF, PF);
NodoProductoFactura* aux = }
new NodoProductoFactura; else{
aux=aux->sgte; if(LF.cab==NULL){
} cout << "\n\tLista Vacia.
aux->sgte=LF.cab->sgte; \n"<< endl;
LF.cab=temp->sgte; }else{
delete temp; int band=0;
LF.total--; aux=LF.cab;
cout << "\n\tFactura while(band==0){
eliminada\n" << endl; Mostrar(aux->info);
}else if(aux->sgte==LF.cab){
cout << "\n\tLista Vacia\n" band=1;
<< endl; }
aux=aux->sgte;
system("pause"); }
}
}
void EliminaFinal(ListaFactura system("pause");
&LF){ }
NodoFactura *temp = LF.cab;
NodoFactura *aux= LF.cab; NodoFactura *Buscar(ListaFactura
&LF, char numFact[]){
if(LF.total > 0){ NodoFactura *aux;
while(temp->sgte != LF.cab)
temp = temp->sgte; int band=0;
while(aux->sgte != temp) aux=LF.cab;
aux = aux->sgte; while(band==0){
aux->sgte=LF.cab; if(strcmp(aux-
>info.numFactura, numFact) == 0){
delete temp; return aux;
LF.total--; }
if(aux->sgte==LF.cab){
cout << "\n\tFactura band=1;
Eliminada\n" << endl; }
}else aux=aux->sgte;
cout << "\n\tLista Vacia\n" }
<< endl; return NULL;
system("pause"); }
}
//*********************************
void EliminaPosicion(ListaFactura ************ MENU, DESARROLLO Y
&LF, NodoFactura *pos){ PROCESO DE PRODUCTO ***********
NodoFactura *aux; int opciones1(){
int rpta;
if(pos==LF.cab){
EliminaInicio(LF); system("cls");
}else cout<< "\n\t\t\t>>>>> MENU
if(pos->sgte==LF.cab) PRODUCTO <<<<<" <<endl;
EliminaFinal(LF);
else{ cout<< "\n\t(1). Inserta
aux=LF.cab; Inicio." <<endl;
while(aux->sgte!=pos){ cout<< "\t(2). Inserta
aux=aux->sgte; final." <<endl;
} cout<< "\t(3). Inserta en
aux->sgte=pos->sgte; Posicion" <<endl;
delete pos; cout<< "\t(4). Elimina Al
LF.total--; Inicio." <<endl;
} cout<< "\t(5). Elimina Al
} Final." <<endl;
cout<< "\t(6). Elimina En
void Presenta(ListaFactura LF){ Posicion" <<endl;
NodoFactura *aux; cout<< "\t(7). Buscar
Producto." <<endl;
22
23
NodoProducto *Pos;
Producto aux; cout<<"\n\tIngrese codigo del
cout<<"\t--------------"<<endl; producto a buscar: ",cin>> cod;
cout<<"\t LLENAR PRODUCTO
"<<endl;
cout<<"\t--------------"<<endl; Pos=Buscar(LP,cod);
Llenar(aux);
InsertarInicio(LP,aux); if (Pos !=NULL) {
cout << "\n\tProducto Mostrar(Pos->info);
Agregado\n" << endl; }
else {
system("pause"); cout <<"\n\tCodigo no
} Existe..\n"<<endl;
}
void system("pause");
RegistrarProductoFinal(ListaProduct }
o &LP){
Producto aux; void opEliminaPos(ListaProducto
cout<<"\t--------------"<<endl; &LP){
cout<<"\t LLENAR PRODUCTO char cod[10];
"<<endl;
cout<<"\t--------------"<<endl; cout << "\n\t Ingrese codigo de
Llenar(aux); producto a eliminar: "; cin >> cod;
InsertarFinal(LP,aux); NodoProducto *pos =
cout << "Producto Agregado" << Buscar(LP,cod);
endl; if (pos !=NULL) {
system("pause"); EliminaPosicion(LP, pos);
} cout << "\n\tProducto
Eliminado.\n" << endl;
void }
RegistrarProductoPosicion(ListaProd else {
ucto &LP){ cout <<"\n\tCodigo no
Producto aux; Existe..\n"<<endl;
char cod[10]; }
system("pause");
cout<<"\t--------------"<<endl; }
cout<<"\t LLENAR PRODUCTO
"<<endl; //---------------------------------
cout<<"\t--------------"<<endl;
Llenar(aux); void Proceso1(ListaProducto &LP){
cout << "\n\t - Ingrese codigo int rpta;
registrado: "; cin >> cod; do{
rpta=opciones1();
NodoProducto *pos = Buscar(LP, switch (rpta) {
cod); case
1:RegistrarProductoInicio(LP);
if (pos !=NULL) { break;
23
24
case
2:RegistrarProductoFinal(LP); //---------------------------------
break; void
case RegistrarVendedorInicio(ListaVended
3:RegistrarProductoPosicion(LP); or &LV){
break; Vendedor aux;
case cout<<"\t--------------"<<endl;
4:EliminaInicio(LP); cout<<"\t LLENAR VENDEDOR
break; "<<endl;
case cout<<"\t--------------"<<endl;
5:EliminaFinal(LP); Llenar(aux);
break; InsertarInicio(LV,aux);
case cout << "Vendedor Agregado" <<
6:opEliminaPos(LP); endl;
break; system("pause");
case 7:opBuscar(LP); }
break;
case 8:Presenta(LP); void
break; RegistrarVendedorFinal(ListaVendedo
case 9:cout << r &LV){
"Gracias. "<< endl; Vendedor aux;
break; cout<<"\t--------------"<<endl;
} cout<<"\t LLENAR VENDEDOR
}while(rpta!=9); "<<endl;
} cout<<"\t--------------"<<endl;
Llenar(aux);
//********************************* InsertarFinal(LV,aux);
******** MENU, DESARROLLO Y PROCESO cout << "Vendedor Agregado" <<
DE VENDEDOR ********************* endl;
system("pause");
int opciones2(){ }
int rpta;
void
system("cls"); RegistrarVendedorPosicion(ListaVend
edor &LV){
cout<< "\n\t\t\t>>>>> MENU Vendedor aux;
VENDEDOR <<<<<" <<endl; char dni[10];
cout<<"\t--------------"<<endl; system("pause");
Llenar(aux);
do{ }
Llenar(aux1,LP);
void
InsertarInicio(aux.LPF,aux1); RegistrarFacturaPosicion(ListaFactu
ra &LF,ListaProducto &LP){
aux.montoTotal+=aux1.subtotal; Factura aux;
cout<<"\n\tDesea registrar ProductoFactura aux1;
otro producto: " <<endl; int rpta;
cout<<"\n\t\t1.Si."<<endl; char num[10];
cout<<"\n\t\t2.No."<<endl;
do{ cout<<"\t--------------"<<endl;
cout<<"\n\t\t\t--> Rpta: cout<<"\t LLENAR FACTURA
";cin>>rpta; "<<endl;
}while(rpta<1 || rpta>2); cout<<"\t--------------"<<endl;
if(rpta==2){ inicia(aux);
cout<<"\n\tFactura Llenar(aux);
agregada.\t"<<endl; do{
} Llenar(aux1,LP);
}while(rpta!=2);
InsertarInicio(LF,aux); InsertarFinal(aux.LPF,aux1);
system("pause"); aux.montoTotal+=aux1.subtotal;
} cout<<"\n\tDesea registrar
otro producto: " <<endl;
void cout<<"\n\t\t1.Si."<<endl;
RegistrarFacturaFinal(ListaFactura cout<<"\n\t\t2.No."<<endl;
&LF,ListaProducto &LP){ do{
Factura aux; cout<<"\n\t\t\t--> Rpta:
ProductoFactura aux1; ";cin>>rpta;
int rpta; }while(rpta<1 || rpta>2);
inicia(aux); if(rpta==2){
cout<<"\t--------------"<<endl; cout<<"\n\tFactura
cout<<"\t LLENAR FACTURA agregada.\n"<<endl;
"<<endl; }
cout<<"\t-------------"<<endl; }while(rpta!=2);
Llenar(aux);
do{ cout << "\n\t - Ingrese numero
de factura registrada: "; cin >>
Llenar(aux1,LP); num;
Pos=Buscar(LF,num); LF.cab=LF.cab->sgte;
}
if (Pos !=NULL) {
Mostrar(Pos->info); for(int z=0; z<LF.total;z++){
} for(int y=0; y<LF.cab-
else { >info.LPF.total; y++){
cout <<"\n\tFactura no if(strcmp(LP.cab-
Existe..\n"<<endl; >info.codigo,LF.cab->info.LPF.cab-
} >info.codProducto)==0){
system("pause"); if(LF.cab->info.LPF.cab-
} >info.cantidad==mayor){
cout<< "\n\t\tNumero
void opEliminaPos(ListaFactura Factura: "<< LF.cab-
&LF){ >info.numFactura<< endl;
char num[10]; cout<< "\n\t\tCantidad:
"<< mayor<< endl;
cout << "\n\tIngrese numero de }
factura a eliminar: "; cin >> num; }
NodoFactura *pos = LF.cab->info.LPF.cab=LF.cab-
Buscar(LF,num); >info.LPF.cab->sgte;
if (pos !=NULL) { }
EliminaPosicion(LF, pos); LF.cab=LF.cab->sgte;
cout << "\n\tFactura }
Eliminada.\n" << endl; LP.cab=LP.cab->sgte;
} }
else {
cout <<"\n\tFactura no
Existe..\n"<<endl; system("pause");
}
system("pause"); }
} //--------------------------------
void Proceso3(ListaFactura &LF,
//REPORTE 9: Productos con su mayor ListaProducto &LP){
factura -------- int rpta;
void opReporte9(ListaFactura do{
LF,ListaProducto LP){ rpta=opciones3();
int mayor; switch (rpta) {
case
for(int x=0; x<LP.total;x++){ 1:RegistrarFacturaInicio(LF,LP);
cout <<"\n\tCodigo de break;
Producto: "<< LP.cab->info.codigo<< case
endl; 2:RegistrarFacturaFinal(LF,LP);
mayor=0; break;
for(int i=0; i<LF.total;i++){ case
for(int j=0; j<LF.cab- 3:RegistrarFacturaPosicion(LF,LP);
>info.LPF.total; j++){ break;
if(strcmp(LP.cab- case
>info.codigo,LF.cab->info.LPF.cab- 4:EliminaInicio(LF);
>info.codProducto)==0){ break;
if(LF.cab- case
>info.LPF.cab->info.cantidad> 5:EliminaFinal(LF);
mayor){ break;
mayor = LF.cab- case
>info.LPF.cab->info.cantidad; 6:opEliminaPos(LF);
} break;
} case 7:opBuscar(LF);
LF.cab- break;
>info.LPF.cab=LF.cab->info.LPF.cab- case 8:Presenta(LF);
>sgte; break;
}
27
28
28
29
CONCLUSIONES:
29