You are on page 1of 1

PILAS DINAMICAS

struct PilaDin { Disco *Data; int Tope; int Max; }; void Inicia(PilaDin &P) { P.Data=NULL; P.Tope=-1; P.Max=0; } void Push(PilaDin &P, Disco &D) { if(P.Tope == P.Max-1) Crece(P); P.Tope++; P.Data[P.Tope]=D; } int Vacia(PilaDin &P) { if(P.Tope==-1) return 1; return 0; } void Crece(PilaDin &P) { Disco *Temp=new Disco[DELTA+ P.Max]; for(int i=0; i<=P.Tope; i++) Temp[i]=P.Data[i]; delete []P.Data; P.Data=Temp; P.Max+=DELTA; } void Pop(PilaDin &P, Disco &D) { if(!Vacia(P)) { D=P.Data[P.Tope]; P.Tope--; } } void Mostrar(PilaDin &P) { clrscr(); if(!Vacia(P)) for(int i=0; i<=P.Tope; i++) Presenta(P.Data[i], i); getch(); }

PILAS struct Nodo ENLAZADAS {Nodo *Sgte; Disco D; }; struct PilaEn {Nodo *Tope; int N; }; void Push(PilaEn &P,Disco &D) {Nodo *Q=new Nodo; Q->D=D; Q->Sgte=P.Tope; P.Tope=Q; P.N++; } int Vacia(PilaEn &P) {if(P.Tope==NULL) return 1; return 0; } void Mostrar(PilaEn &P) {if(!Vacia(P)) { Nodo *Aux=P.Tope; while(Aux!=NULL) {MostrarDisco(Aux->D); Aux=Aux->Sgte; } } else printf("\nPila vacia."); getch(); } void Pop(PilaEn &P,Disco &D) {Nodo *Aux= P.Tope; if(!Vacia(P)) {D= Aux->D; P.Tope=Aux->Sgte; delete Aux; P.N--; } else {cout<<"\n Pila Vacia"; getch();}
}

COLAS DINAMICAS

COLAS ENLAZADAS
struct Nodo {Cliente C; Nodo *Sgte; }; struct Lista {Nodo *Frente,*Final; int N; }; void Append(Lista &L,Cliente &C) {Nodo *p=new Nodo; p->C=C; if(Vacia(L)) {p->Sgte=L.Final; L.Frente=p; } else {p->Sgte=L.Final->Sgte; L.Final->Sgte=p; } L.Final=p; L.N++; } int Vacia(Lista &L) {if(L.N==0) return 1; return 0; } void Serve(Lista &L,Cliente &C) {if(!Vacia(L)) {C=L.Frente->C; if(L.Frente==L.Final) {delete L.Frente; L.Frente=L.Final=NULL; } else { Nodo *Aux=L.Frente; L.Frente=Aux->Sgte; delete Aux; } L.N--; } else cprintf("\nCola vacia"); getch(); } void Mostrar(Lista &L) {Nodo *Aux=L.Frente; if(!Vacia(L)) {while(Aux!=NULL) {MostrarCliente(Aux->C); Aux=Aux->Sgte; } } else printf("\nCola vacia"); getch(); }

ARCHIVOS DINAMICAS
void GrabaListaCantan(ListaCantantes &LC) { LC.pArch = fopen("c:\\cantante.dat", "wb+"); if ( LC.pArch != NULL ) { fwrite(&LC.N,sizeof(int),1,LC.pArch); for(int i=0; i<LC.N; i++) GrabaC(LC,LC.Data[i]); fclose(LC.pArch); } } void GrabaC(ListaCantantes &LC, Cantante &C) { fwrite(&C,sizeof(Cantante),1,LC.pArch); } void RecuperaListaCantan(ListaCantantes &LC) { int NReg; LC.pArch = fopen("c:\\cantante.dat", "rb+"); if ( LC.pArch != NULL ) { fread(&NReg,sizeof(int),1,LC.pArch); for(int i=0; i<NReg; i++) { Cantante C; IniciaCantante(C); RecupC(LC,C); Inserta(LC,C); } } else { printf("Error al abrir el archivo"); getch(); } } void RecupC(ListaCantantes &LC, Cantante &C) { fread(&C,sizeof(Cantante),1,LC.pArch); }

struct ColaDin {Cliente *Data; int Frente,Final; int Max; FILE *pArch; };. void Inicia(ColaDin &C) { C.Data=NULL; C.Frente=-1; C.Final=-1; C.Max=0; } void Append(ColaDin &L,Cliente C) { if(L.Final==L.Max-1) Crece(L); L.Final++; L.Data[L.Final]=C; if(L.Final==0) L.Frente=0; } void Crece(ColaDin &L) { Cliente *Temp=new Cliente[L.Max+DELTA]; for(int i=L.Frente;i<=L.Final;i++) Temp[i]=L.Data[i]; //delete []L.Data; L.Data=Temp; L.Max+=DELTA; } int Vacia(ColaDin &L) { if(L.Final==-1) return 1; return 0; } void Serve(ColaDin &L ,Cliente &C) { if(!Vacia(L)) { C= L.Data[L.Frente]; if(L.Frente==L.Final) { L.Frente=-1; L.Final=-1; } else L.Frente++; }else printf("Cola vacia"); getch(); } void Mostrar(ColaDin &L) { if(!Vacia(L)) for(int i=L.Frente;i<=L.Final;i++) MostrarCliente(L.Data[i]); getch(); }

ARCHIVOS ENLAZADAS
void GrabaFarmacia(Farmacia &F) { Nodo *Aux; F.pArch = fopen("c:\\farmacia.dat", "wb+"); if ( F.pArch != NULL ) { fwrite(&F.N,sizeof(int),1,F.pArch); Aux=F.Cab; while(Aux != NULL) { GrabaMedicamento(F,Aux->M); Aux = Aux->Sgte; } fclose(F.pArch); } } void GrabaM(Farmacia &F, Medicamento &M) { fwrite(&M,sizeof(Medicamento),1,F.pArch); } void RecuperaFarmacia(Farmacia &F) { Nodo *Aux=F.Cab; Inserta(F,M,Aux); }

You might also like