Multilistas
Posted on June 17th, 2005 in C++, Código |
Ejemplo de multilistas (listas de listas) para Estructuras de datos.
C++:
-
//CESAR JORGE SANCHEZ OROPEZA ITESM CCM 00922794
-
// ESTRUCTURA DE DATOS
-
// fucuyama@yahoo.com
-
// MULTILISTAS
-
-
-
#include <iostream.h>
-
#include <stdlib.h>
-
#define MAX 4
-
-
struct proovedor
-
{
-
int data;
-
char string[30];
-
-
struct proovedor *sig,*lant,*lsig;
-
-
};
-
-
struct producto
-
{
-
int data;
-
struct proovedor *inicioprov;
-
struct producto *sig;
-
struct producto *osig,*oant;
-
-
};
-
-
class Multilista
-
{
-
-
private:
-
-
struct producto *inicio;
-
struct producto *listaofertas;
-
struct proovedor *lista;
-
-
-
-
public:
-
void crear(void);
-
void inserta(int);
-
int borra(void);
-
void muestra(void);
-
void proovedores(void);
-
void proovedoresb(void);
-
void ofertas(int);
-
void printofertas(void);
-
};
-
-
-
-
void Multilista::crear(void)
-
{
-
-
inicio = NULL;
-
lista = NULL;
-
listaofertas = NULL;
-
-
-
}
-
-
-
void Multilista::inserta(int nombre){
-
-
int resp = 0;
-
struct producto *nuevo,*ap1;
-
-
struct proovedor *ap3; //uso para la lista de proovedores
-
-
-
-
nuevo = new producto;
-
-
-
//Se insertan los proovedores de forma cirular
-
-
struct proovedor *inicio2;
-
inicio2 = NULL;
-
struct proovedor *nuevo2, *ap2;
-
-
-
-
do{
-
-
-
nuevo2 = new proovedor;
-
-
nuevo2->lsig = NULL;
-
nuevo2->lant = NULL;
-
cout<<"\nIntroduce un Proovedor\n";
-
cin>> nuevo2->string;
-
nuevo2->sig = NULL;
-
-
if( inicio2 == NULL ){
-
-
inicio2 = nuevo2;
-
nuevo2->sig = nuevo2;
-
cout<<"ok";
-
-
}
-
-
else
-
{
-
ap2 = inicio2;
-
-
-
while(ap2->sig != inicio2 )
-
-
ap2 = ap2->sig;
-
-
nuevo2->sig = ap2->sig;
-
ap2->sig = nuevo2;
-
cout<<"ok";
-
-
}
-
-
-
if(lista == NULL){
-
-
lista = nuevo2;
-
-
}
-
-
-
-
else{
-
ap3 = lista;
-
-
while(ap3->lsig != NULL )
-
ap3 = ap3->lsig;
-
-
-
ap3->lsig = nuevo2;
-
nuevo2->lant = ap3;
-
-
}
-
-
cout<<"\nEntre 2 para terminar, 1 para continua\n";
-
cin>>resp;
-
-
-
}while(resp!=2);
-
-
-
//Se terminan los proovedores de forma cirular
-
-
nuevo->inicioprov = inicio2;
-
nuevo->data = nombre;
-
nuevo->sig = NULL;
-
-
if( inicio == NULL ){
-
-
inicio = nuevo;
-
}
-
else
-
{
-
ap1 = inicio;
-
-
-
while(ap1->sig != NULL )
-
-
ap1 = ap1->sig;
-
-
-
nuevo->sig = ap1->sig;
-
ap1->sig = nuevo;
-
-
-
}
-
-
-
}
-
-
void Multilista::muestra (void){
-
-
struct producto *ap;
-
struct proovedor *ap2;
-
-
-
if(inicio != NULL)
-
{
-
ap=inicio;
-
while(ap!=NULL)
-
{
-
cout<<"\nNumero de Item: "<<ap->data <<"\nProovedores: ";
-
-
-
-
ap2=ap->inicioprov;
-
-
-
-
while(ap2->sig != ap->inicioprov){
-
-
cout<<" "<<ap2->string <<" ";
-
ap2 = ap2->sig;
-
-
}
-
cout<<" "<<ap2->string <<" ";
-
ap = ap->sig;
-
-
}
-
-
}
-
-
else
-
cout<<"\nLSITA VACIA\n";
-
-
-
-
-
-
}
-
-
-
void Multilista::proovedores(void)
-
{
-
struct proovedor *ap;
-
-
if(lista != NULL)
-
{
-
ap=lista;
-
while(ap!=NULL)
-
{
-
cout<<" "<<ap->string <<" ";
-
ap = ap->lsig;
-
}
-
-
}
-
-
else
-
cout<<"\nLSITA VACIA\n";
-
}
-
void Multilista::proovedoresb(void)
-
{
-
struct proovedor *ap;
-
-
if(lista != NULL)
-
{
-
ap=lista;
-
while(ap->lsig!=NULL)
-
{
-
ap = ap->lsig;
-
}
-
-
while(ap!=NULL)
-
{
-
cout<<" "<<ap->string <<" ";
-
ap = ap->lant;
-
}
-
}
-
-
else
-
cout<<"\nLSITA VACIA\n";
-
}
-
-
void Multilista::ofertas(int valor)
-
{
-
if(inicio != NULL){
-
struct producto *nuevo,*ap2;
-
nuevo = new producto;
-
-
-
nuevo = inicio;
-
while(nuevo != NULL && nuevo->data != valor){//ap1 viene a ser nuevo y ap2 el aux
-
nuevo = nuevo->sig;
-
-
}
-
-
-
-
-
if(nuevo!=NULL && nuevo->data == valor)
-
{
-
-
-
-
if(listaofertas==NULL){
-
listaofertas = nuevo;
-
nuevo->osig = listaofertas;
-
nuevo->oant = listaofertas;
-
cout<<"\nok\n";
-
}
-
else
-
{
-
ap2 = listaofertas;
-
-
while(ap2->osig != listaofertas)
-
ap2 = ap2->osig;
-
-
nuevo->osig = ap2 -> osig;
-
nuevo ->oant = ap2;
-
ap2 ->osig ->oant = nuevo;
-
ap2 ->osig = nuevo;
-
;
-
-
-
}
-
-
}
-
else cout<<"\no se encontro\n";
-
-
-
-
-
-
}
-
-
}
-
-
-
void Multilista::printofertas(void)
-
{
-
struct producto *ap;
-
-
if(listaofertas != NULL)
-
{
-
cout<<" print ";
-
-
ap=listaofertas;
-
cout<<" "<<ap->data <<" ";
-
-
while(ap->osig!=listaofertas)
-
{
-
ap = ap->osig;
-
cout<<" "<<ap->data <<" ";
-
-
}
-
-
-
}
-
-
else
-
cout<<"\nLSITA VACIA\n";
-
-
};
-
void main(void){
-
-
-
Multilista lista;
-
lista.crear();
-
-
int resp,dato;
-
-
do{
-
cout<<"\n Aplicacion que administra elementos de una tienda";
-
cout<<"\n1) IMPRIMIR";
-
cout<<"\n2) Ingresa";
-
cout<<"\n3) Imprime proovedores ";
-
cout<<"\n4) Imprime proovedores alrevez";
-
cout<<"\n5) Agrega Producto a ofertas";
-
cout<<"\n6) imprime ofertas";
-
cout<<"\n7) SALIR";
-
cout<<"\n : ";
-
-
cin>>resp;
-
-
if(resp==1) lista.muestra();
-
-
if(resp==2) {
-
cout<<"Numero de serie del producto ";
-
cin>>dato ;
-
-
lista.inserta(dato);
-
-
}
-
-
if(resp==3) {
-
lista.proovedores();
-
-
}
-
if(resp==4) {
-
lista.proovedoresb();
-
-
}
-
-
if(resp==5) {
-
cout<<"Numero de serie del producto que se desea ofertar: ";
-
cin>>dato;
-
lista.ofertas(dato);
-
-
}
-
-
if(resp==6) {
-
lista.printofertas();
-
-
}
-
-
}while(resp!=7);
-
-
-
}
Popularidad: 8%

