Advertisement
ambigus9

Fila Funcional!

Aug 20th, 2013
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.56 KB | None | 0 0
  1. /* Agrega_Clase_Fila.cpp: archivo de proyecto principal.
  2.  
  3. 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.
  4. La fila es una estructura finita y lineal donde los elementos pueden ser de cualquier tipo que se requiera.
  5. El Frente de la pila señala donde se encuentra el siguiente elemento
  6. por atender en la fila.
  7. 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.
  8. La diferencia entre Filas y Pilas es la forma en que se insertan y
  9. extraen los datos. 0 sea, la diferencia está en el diseño de las
  10. operaciones, aunque las operaciones serán las mismas en ambos casos. */
  11.  
  12. #include "stdafx.h"
  13. #include "iostream"
  14. #include "conio.h"
  15. using namespace System;
  16. using namespace std;
  17. struct nodo
  18. {
  19. int dato;
  20. nodo *sig;
  21. };
  22. class Fila
  23. {
  24. private:
  25. nodo *frente;
  26. nodo *final;
  27. public:
  28. Fila();
  29. char meter(int valor);
  30. char sacar(int &valor);
  31. ~Fila();
  32. void limpiarFila(); //Quita todos los elementos de la fila
  33. int frenteFila(); //Obtiene el elemento del frente de la fila
  34. int longitudFila(); //Obtiene la cantidad de elementos de la fila
  35. Void desplegarFila(); //muestra los elementos de la fila
  36. } ;
  37. Fila::Fila()
  38. {
  39. frente=NULL; final=NULL;
  40. }
  41. Fila::~Fila()
  42. {
  43. nodo *apunt;
  44. apunt=frente;
  45. while(frente!=NULL)
  46. {
  47. frente=apunt->sig;
  48. delete apunt;
  49. apunt=frente;
  50. }
  51. }
  52. char Fila::meter(int valor)
  53. {
  54. nodo *nuevo;
  55. nuevo=new nodo;
  56. if(nuevo == NULL)return 0;
  57. else
  58. {
  59. nuevo->dato=valor;
  60. if(final==NULL)
  61. {
  62. frente=nuevo;
  63. }
  64. else
  65. {
  66. final->sig=nuevo;
  67. }
  68. nuevo->sig=NULL;
  69. final = nuevo;
  70. return 1;
  71. }
  72. }
  73. char Fila::sacar(int &valor)
  74. {
  75. nodo *apunt;
  76. apunt=frente;
  77. if(apunt==NULL)return 0;
  78. else
  79. {
  80. valor =apunt->dato;
  81. if(frente->sig==NULL)
  82. {
  83. frente=NULL;
  84. final=NULL;
  85. }
  86. else frente=apunt->sig;
  87. delete apunt;
  88. return 1;
  89. }
  90. }
  91. void main()
  92. {
  93. Fila f;
  94. int valor;
  95. char resp;
  96. do
  97. {
  98. cout<<"Entre elemento a la fila"<<endl;
  99. cin>>valor;
  100. f.meter(valor);
  101. cout<<"Desea entrar otro elemento a la fila ? (s/n) "<<endl;
  102. cin>>resp;
  103. resp=tolower (resp);
  104. }while(resp=='s');
  105.  
  106. cout<<"Desea atender un elemento de la fila ? (s/n) "<<endl;
  107. cin>>resp;
  108. resp=tolower(resp);
  109. if(resp=='s')
  110. {
  111. do
  112. {
  113. if(f.sacar(valor))
  114. {
  115. cout<<"El elemento atendido es: "<<valor<<endl;
  116. cout<<"Desea atender otro elemento de la fila? (s/n) "<<endl;
  117. cin>>resp;
  118. resp=tolower(resp);
  119. }
  120. else
  121. {
  122. cout<<"La fila esta vacia"<<endl;
  123. break;
  124. }
  125. }while(resp=='s');
  126. }
  127. f.desplegarFila();
  128. f.longitudFila();
  129. f.limpiarFila();
  130. f.desplegarFila();
  131. getch();
  132. }
  133.  
  134. void Fila::desplegarFila()
  135. {
  136. nodo *apunt;
  137. apunt=frente;
  138. if(apunt==NULL)
  139. {
  140. cout<<"La Fila esta vacia"<<endl;
  141. }
  142. else
  143. {
  144. cout<<"-----FILA ACTUAL-----"<<endl;
  145. do
  146. {
  147. cout<<apunt->dato<<endl;
  148. apunt=apunt->sig;
  149. }while(apunt!=NULL);
  150. }
  151. }
  152.  
  153. int Fila::longitudFila()
  154. {
  155. nodo *apunt;
  156. int contador=0;
  157. apunt=frente;
  158. if(apunt==NULL)
  159. {
  160. cout<<"La Fila esta vacia"<<endl;
  161. }
  162. else
  163. {
  164. do
  165. {
  166. contador=contador+1;
  167. apunt=apunt->sig;
  168. }while(apunt!=NULL);
  169. cout<<"La Longitud de la lista es: "<<contador;
  170. return contador;
  171. }
  172. }
  173.  
  174. void Fila::limpiarFila()
  175. {
  176. nodo *apunt;
  177. apunt=frente;
  178. while(frente!=NULL)
  179. {
  180. frente=apunt->sig;
  181. delete apunt;
  182. apunt=frente;
  183. }
  184. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement