elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Cola limittar elementos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cola limittar elementos  (Leído 870 veces)
Mar90_13

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Cola limittar elementos
« en: 29 Julio 2022, 20:53 pm »

¿Cómo establezco el numero de elementos que acepta la cola?
Y ¿como muestro el elemento al principio de la cola?

Código
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4.  
  5.  
  6. using namespace std;
  7.  
  8. struct Nodo{
  9. int dato;
  10. Nodo *siguiente;
  11.  
  12. };
  13.  
  14. void insertarCola(Nodo *&,Nodo *&, int);
  15. void mostrarCola(Nodo *&);
  16. bool cola_vacia(Nodo *);
  17. void eliminarCola(Nodo *&,Nodo *&, int &);
  18. void frenteCola(Nodo *&);
  19. void finalCola(Nodo *&);
  20.  
  21. int main(){
  22. Nodo *frente = NULL;
  23. Nodo *fin = NULL;
  24. int dato[10];
  25.  
  26. cout<<"\nIngrese el valor para la COLA: ";
  27. cin>>dato[10];
  28. insertarCola(frente,fin,dato[10]);
  29. cout<<"\nValor: " <<dato[10]<< " ingresado correctamente\n";
  30. system("pause");
  31.  
  32.  
  33. mostrarCola(frente);
  34. system("pause");
  35. frenteCola(frente);
  36. system("pause");
  37. finalCola(fin);
  38. system("pause");
  39.  
  40.  
  41. cout<<"\nLos valores fueron eliminados correctamente ";
  42. while (frente !=NULL){
  43. eliminarCola(frente,fin,dato[10]);
  44. if(frente !=NULL){
  45. cout<<dato<<" , ";
  46. }
  47. else{
  48. cout<<dato<<" . ";
  49. }
  50. }
  51. cout<<"\n";
  52. system("pause");
  53.  
  54. system("cls");
  55.  
  56. getch();
  57. return 0;
  58. }
  59.  
  60.  
  61. //Función para insertar valores a la COLA
  62. void insertarCola(Nodo *&frente, Nodo *&fin, int n){
  63. Nodo *nuevo_nodo = new Nodo();
  64. nuevo_nodo->dato = n;
  65. nuevo_nodo->siguiente = NULL;
  66.  
  67. if(cola_vacia(frente)){
  68. frente = nuevo_nodo;
  69. }
  70. else{
  71. fin->siguiente = nuevo_nodo;
  72.  
  73. }
  74.  
  75. fin = nuevo_nodo;
  76. }
  77.  
  78. void mostrarCola(Nodo *&frente){
  79. while(frente !=NULL){
  80. cout<<"Datos de la cola: "<<frente->dato<< "\n";
  81. frente=frente->siguiente;
  82. }
  83. }
  84.  
  85. //Función determinar si la cola esta vacía
  86. bool cola_vacia(Nodo *frente){
  87. return (frente == NULL)? true : false;
  88. }
  89.  
  90. //Función para mostrar el principio de la COLA
  91. void frenteCola(Nodo *&frente){
  92. while(frente != NULL){
  93. cout<<"Dato: " <<frente->dato<< " se encuentra al frente de la COLA\n";
  94. frente = frente->siguiente;
  95. }
  96.  
  97. }
  98.  
  99. //Función para mostrar el final de la cola
  100. void finalCola(Nodo *&fin){
  101. while (fin != NULL){
  102. cout<<"Dato: " <<fin->dato<< " se encuentra al final de la COLA\n";
  103. fin=fin->siguiente;
  104. }
  105. }
  106.  
  107. //Función para extraer valores de la COLA
  108. void eliminarCola(Nodo *&frente,Nodo *&fin, int &n){
  109. n = frente->dato;
  110. Nodo *aux = frente;
  111.  
  112. if(frente == fin){
  113. frente = NULL;
  114. fin = NULL;
  115.  
  116. }
  117. else{
  118. frente = frente->siguiente;
  119.  
  120. }
  121. delete aux;
  122. }

MOD: El código debe ir entre etiquetas de Código GeSHi


« Última modificación: 31 Julio 2022, 12:13 pm por K-YreX » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.259


Ver Perfil
Re: Cola limittar elementos
« Respuesta #1 en: 29 Julio 2022, 21:25 pm »

¿Cómo establezco el numero de elementos que acepta la cola?
Durante diseño, puedes establecer una constante: MaxItems
O durante ejecución, puedes optar por solicitar el valor al inicializar o que pueda cambiarse en cualquier momento.

- Se establece durante diseño, cuando se conoce la aplicación destino y por tanto que el límite impuesto es el adecuado.
- Se establece al inicializar la instancia cuando el consumidor conoce el valor que resulta adecuado.
- Se establece y cambia en cualquier momento, cuando el valor depende directa o indirectamente de otros valores de los que la instancia no mantiene control...  Este caso puede ser un poco complejo, ya que si el nuevo límite se establece a un valor menor que el previo establecido, hay que decidir que hacer con los elementos 'sobrantes', si se eliminan o no, y en caso de eliminarlos, de dónde (principio, final) o cuales (si hay algún dato extra asociado, por ejemplo una fecha por lo que referiría a antigüedad (ojo, esa antigüedad no necesariamente se refiere a la fecha de introducción si no a un dato externo que es provisto con el nodo a introducir, también podría ser un valor asociado a prioridad o importancia, etc...)...

Y ¿como muestro el elemento al principio de la cola?
Hay que establecer un elemento raiz. ...a la hora de insertar:

Código:
buleano = funcion Insertar(nodo n)
    si (numitems < maxitems)  // y (maxitems > 0)
        si (numItems = 0)
            raiz = nodo
        sino
            ultimo.siguiente = nodo
        fin si
        ultimo = nodo
        
        numitems +=1
        devolver TRUE
    sino
        devolver FALSE
    fin si
fin funcion

p.d.: Nota como el código opcional (al final d ela línea): ' y (maxitems > 0)' permitiría introducir nodos aún cuando no se hubiera establecido un valor para 'maxItems'... Es decir permite que el tercer caso puede funcionar en tanto no se conozca un valor útil como el límite de nodos permitidos.


« Última modificación: 29 Julio 2022, 21:41 pm por Serapis » En línea

dario01dr

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Cola limittar elementos
« Respuesta #2 en: 30 Julio 2022, 03:05 am »

Hola, C++ ya tienes colas prediseñadas, lee algo de stacks STL. Busca en google STL stacks C++ te va a ayudar mucho.
Salu2
En línea

Mar90_13

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Cola limittar elementos
« Respuesta #3 en: 1 Agosto 2022, 23:04 pm »

Gracias Serapis
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines