Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Agrega_Clase_Fila.cpp: archivo de proyecto principal.
- Una Fila (Cola - queue)es una estructura de datos cuyos elementos se manejan bajo el sistema FIFO (First Input,First Output). Primero en entrar, primero en salir.
- La fila es una estructura finita y lineal donde los elementos pueden ser de cualquier tipo que se requiera.
- El Frente de la pila señala donde se encuentra el siguiente elemento
- por atender en la fila.
- El Final de la fila señala el lugar del último elemento que llegó. Diariamente vivimos las filas o lineas de espera, y en ellas se atiende al primero de la fila.
- La diferencia entre Filas y Pilas es la forma en que se insertan y
- extraen los datos. 0 sea, la diferencia está en el diseño de las
- operaciones, aunque las operaciones serán las mismas en ambos casos. */
- #include "stdafx.h"
- #include "iostream"
- #include "conio.h"
- using namespace System;
- using namespace std;
- struct nodo
- {
- int dato;
- nodo *sig;
- };
- class Fila
- {
- private:
- nodo *frente;
- nodo *final;
- public:
- Fila();
- char meter(int valor);
- char sacar(int &valor);
- ~Fila();
- void limpiarFila(); //Quita todos los elementos de la fila
- int frenteFila(); //Obtiene el elemento del frente de la fila
- int longitudFila(); //Obtiene la cantidad de elementos de la fila
- Void desplegarFila(); //muestra los elementos de la fila
- } ;
- Fila::Fila()
- {
- frente=NULL; final=NULL;
- }
- Fila::~Fila()
- {
- nodo *apunt;
- apunt=frente;
- while(frente!=NULL)
- {
- frente=apunt->sig;
- delete apunt;
- apunt=frente;
- }
- }
- char Fila::meter(int valor)
- {
- nodo *nuevo;
- nuevo=new nodo;
- if(nuevo == NULL)return 0;
- else
- {
- nuevo->dato=valor;
- if(final==NULL)
- {
- frente=nuevo;
- }
- else
- {
- final->sig=nuevo;
- }
- nuevo->sig=NULL;
- final = nuevo;
- return 1;
- }
- }
- char Fila::sacar(int &valor)
- {
- nodo *apunt;
- apunt=frente;
- if(apunt==NULL)return 0;
- else
- {
- valor =apunt->dato;
- if(frente->sig==NULL)
- {
- frente=NULL;
- final=NULL;
- }
- else frente=apunt->sig;
- delete apunt;
- return 1;
- }
- }
- void main()
- {
- Fila f;
- int valor;
- char resp;
- do
- {
- cout<<"Entre elemento a la fila"<<endl;
- cin>>valor;
- f.meter(valor);
- cout<<"Desea entrar otro elemento a la fila ? (s/n) "<<endl;
- cin>>resp;
- resp=tolower (resp);
- }while(resp=='s');
- cout<<"Desea atender un elemento de la fila ? (s/n) "<<endl;
- cin>>resp;
- resp=tolower(resp);
- if(resp=='s')
- {
- do
- {
- if(f.sacar(valor))
- {
- cout<<"El elemento atendido es: "<<valor<<endl;
- cout<<"Desea atender otro elemento de la fila? (s/n) "<<endl;
- cin>>resp;
- resp=tolower(resp);
- }
- else
- {
- cout<<"La fila esta vacia"<<endl;
- break;
- }
- }while(resp=='s');
- }
- f.desplegarFila();
- f.longitudFila();
- f.limpiarFila();
- f.desplegarFila();
- getch();
- }
- void Fila::desplegarFila()
- {
- nodo *apunt;
- apunt=frente;
- if(apunt==NULL)
- {
- cout<<"La Fila esta vacia"<<endl;
- }
- else
- {
- cout<<"-----FILA ACTUAL-----"<<endl;
- do
- {
- cout<<apunt->dato<<endl;
- apunt=apunt->sig;
- }while(apunt!=NULL);
- }
- }
- int Fila::longitudFila()
- {
- nodo *apunt;
- int contador=0;
- apunt=frente;
- if(apunt==NULL)
- {
- cout<<"La Fila esta vacia"<<endl;
- }
- else
- {
- do
- {
- contador=contador+1;
- apunt=apunt->sig;
- }while(apunt!=NULL);
- cout<<"La Longitud de la lista es: "<<contador;
- return contador;
- }
- }
- void Fila::limpiarFila()
- {
- nodo *apunt;
- apunt=frente;
- while(frente!=NULL)
- {
- frente=apunt->sig;
- delete apunt;
- apunt=frente;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement