Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. #ifndef _QUEUE_INCLUDE_
  2. #define _QUEUE_INCLUDE_
  3.  
  4. typedef struct tagQFifo
  5. {
  6. int nSize;
  7. int nItems; // ilosc elementow w kolejce
  8. int First; // index/wskaznik na 1 element (poczatek kolejki)
  9. int Last; // index/wskaznik na za ostatni element (koniec kolejki + 1)
  10. int* tab;
  11.  
  12. }QFifo;
  13.  
  14. void CreateQueue ( QFifo* fifo, int Size );
  15. void EnQueue ( QFifo* fifo, int x );
  16. int DeQueue ( QFifo* fifo );
  17. int IsEmptyQueue ( QFifo* fifo );
  18. void RemoveQueue ( QFifo* fifo );
  19. int IsFullQueue ( QFifo* fifo );
  20. void PrintTab ( QFifo* fifo, int n );
  21. #endif
  22.  
  23.  
  24. -------------------------------------------------------------------
  25. #include "Fifo.h"
  26. #include <stdlib.h>
  27. #include <iostream>
  28. using namespace std;
  29.  
  30. void CreateQueue ( QFifo* fifo,int Size )
  31. {
  32.  
  33. fifo->tab =(int*)malloc(Size*sizeof(int));
  34. if ( fifo->tab ){
  35. memset ( fifo->tab, 0, Size*sizeof(int) );
  36. fifo->First = 0;
  37. fifo->Last = 0;
  38. fifo->nSize = Size;
  39. fifo->nItems = 0;
  40. }
  41. }
  42. void EnQueue ( QFifo* fifo, int x ) //wrzuca na koniec
  43. {
  44. if ( !IsFullQueue ( fifo ) )
  45. {
  46. fifo->tab[fifo->Last] = x;
  47. fifo->nItems++;
  48. fifo->Last=( fifo->Last+1 )%( fifo->nSize );
  49. }
  50. else cout << "Kolejka jest przepelniona!!!";
  51. }
  52. int DeQueue ( QFifo* fifo ) //usuwa z poczÄ…tku
  53. {
  54. int val = 0;
  55. if ( !IsEmptyQueue ( fifo ) )
  56. {
  57. val = fifo->tab[fifo->First];
  58. fifo->tab[fifo->First] = 0; //zerujemy el. tablicy
  59. fifo->nItems--;
  60. fifo->Last=( fifo->First+1 )%( fifo->nSize );
  61. }
  62. else cout << "Kolejka jest pusta!!! Nie mozesz usunac wiecej elementow.";
  63. return val;
  64. }
  65. int IsEmptyQueue ( QFifo* fifo )
  66. {
  67. return !(fifo->nItems);
  68. }
  69. int IsFullQueue ( QFifo* fifo )
  70. {
  71. return(fifo->nItems==fifo->nSize); //kolejka pelna jesli poczatek = element wolny+1
  72. }
  73. void RemoveQueue ( QFifo* fifo )
  74. {
  75. free ( fifo->tab );
  76. fifo->tab = NULL;
  77. fifo->nSize = 0;
  78. }
  79. void PrintTab ( QFifo* fifo, int n )
  80. {
  81. for ( int i = 0; i < n; i++ )
  82. {
  83. cout << fifo->tab[i] << " ";
  84. }cout << endl;
  85. }
  86.  
  87. --------------------------------------------------------------------------
  88. // kolejka3 (tablica).cpp : Defines the entry point for the console application.
  89. //
  90.  
  91. #include "Fifo.h"
  92. #include <stdio.h>
  93. #include <iostream>
  94.  
  95. using namespace std;
  96.  
  97. int main(int argc, char* argv[])
  98. {
  99. QFifo fifo;
  100. CreateQueue ( &fifo,4);
  101. int x;
  102. for ( int j = 0; j < 3; j++ ){
  103. cout << "\nWpisz liczbe: \n";
  104. cin >> x;
  105. EnQueue ( &fifo, x ); cout << "\nDodaje do kolejki: \n";
  106. PrintTab ( &fifo, 4 );
  107. }
  108. for ( int j = 0; j < 2; j++ ){
  109. cout << "\nSciagnelam: " << DeQueue ( &fifo );
  110. cout << "\nUsuwam z kolejki: \n";
  111. PrintTab ( &fifo, 4 );
  112. }
  113. for ( int j = 0; j < 4; j++ ){
  114. cout << "\nWpisz liczbe: \n";
  115. cin >> x;
  116. EnQueue ( &fifo, x ); cout << "\nDodaje do kolejki: \n";
  117. PrintTab ( &fifo, 4 );
  118. }
  119. for ( int j = 0; j < 5; j++ ){
  120. cout << "\nSciagnelam: " << DeQueue ( &fifo );
  121. cout << "\nUsuwam z kolejki: \n";
  122. PrintTab ( &fifo, 4 );
  123. }
  124.  
  125. cout << "\nWpisz liczbe: \n";
  126. cin >> x;
  127. EnQueue ( &fifo, x ); cout << "\nDodaje do kolejki: \n";
  128. PrintTab ( &fifo, 4 );
  129.  
  130. cout << "\nWpisz liczbe: \n";
  131. cin >> x;
  132. EnQueue ( &fifo, x ); cout << "\nDodaje do kolejki: \n";
  133. PrintTab ( &fifo, 4 );
  134.  
  135. RemoveQueue ( &fifo ); cout << "\nUsuwam kolejke\n";
  136. return 0;
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement