Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef _QUEUE_INCLUDE_
- #define _QUEUE_INCLUDE_
- typedef struct tagQFifo
- {
- int nSize;
- int nItems; // ilosc elementow w kolejce
- int First; // index/wskaznik na 1 element (poczatek kolejki)
- int Last; // index/wskaznik na za ostatni element (koniec kolejki + 1)
- int* tab;
- }QFifo;
- void CreateQueue ( QFifo* fifo, int Size );
- void EnQueue ( QFifo* fifo, int x );
- int DeQueue ( QFifo* fifo );
- int IsEmptyQueue ( QFifo* fifo );
- void RemoveQueue ( QFifo* fifo );
- int IsFullQueue ( QFifo* fifo );
- void PrintTab ( QFifo* fifo, int n );
- #endif
- -------------------------------------------------------------------
- #include "Fifo.h"
- #include <stdlib.h>
- #include <iostream>
- using namespace std;
- void CreateQueue ( QFifo* fifo,int Size )
- {
- fifo->tab =(int*)malloc(Size*sizeof(int));
- if ( fifo->tab ){
- memset ( fifo->tab, 0, Size*sizeof(int) );
- fifo->First = 0;
- fifo->Last = 0;
- fifo->nSize = Size;
- fifo->nItems = 0;
- }
- }
- void EnQueue ( QFifo* fifo, int x ) //wrzuca na koniec
- {
- if ( !IsFullQueue ( fifo ) )
- {
- fifo->tab[fifo->Last] = x;
- fifo->nItems++;
- fifo->Last=( fifo->Last+1 )%( fifo->nSize );
- }
- else cout << "Kolejka jest przepelniona!!!";
- }
- int DeQueue ( QFifo* fifo ) //usuwa z poczÄ…tku
- {
- int val = 0;
- if ( !IsEmptyQueue ( fifo ) )
- {
- val = fifo->tab[fifo->First];
- fifo->tab[fifo->First] = 0; //zerujemy el. tablicy
- fifo->nItems--;
- fifo->Last=( fifo->First+1 )%( fifo->nSize );
- }
- else cout << "Kolejka jest pusta!!! Nie mozesz usunac wiecej elementow.";
- return val;
- }
- int IsEmptyQueue ( QFifo* fifo )
- {
- return !(fifo->nItems);
- }
- int IsFullQueue ( QFifo* fifo )
- {
- return(fifo->nItems==fifo->nSize); //kolejka pelna jesli poczatek = element wolny+1
- }
- void RemoveQueue ( QFifo* fifo )
- {
- free ( fifo->tab );
- fifo->tab = NULL;
- fifo->nSize = 0;
- }
- void PrintTab ( QFifo* fifo, int n )
- {
- for ( int i = 0; i < n; i++ )
- {
- cout << fifo->tab[i] << " ";
- }cout << endl;
- }
- --------------------------------------------------------------------------
- // kolejka3 (tablica).cpp : Defines the entry point for the console application.
- //
- #include "Fifo.h"
- #include <stdio.h>
- #include <iostream>
- using namespace std;
- int main(int argc, char* argv[])
- {
- QFifo fifo;
- CreateQueue ( &fifo,4);
- int x;
- for ( int j = 0; j < 3; j++ ){
- cout << "\nWpisz liczbe: \n";
- cin >> x;
- EnQueue ( &fifo, x ); cout << "\nDodaje do kolejki: \n";
- PrintTab ( &fifo, 4 );
- }
- for ( int j = 0; j < 2; j++ ){
- cout << "\nSciagnelam: " << DeQueue ( &fifo );
- cout << "\nUsuwam z kolejki: \n";
- PrintTab ( &fifo, 4 );
- }
- for ( int j = 0; j < 4; j++ ){
- cout << "\nWpisz liczbe: \n";
- cin >> x;
- EnQueue ( &fifo, x ); cout << "\nDodaje do kolejki: \n";
- PrintTab ( &fifo, 4 );
- }
- for ( int j = 0; j < 5; j++ ){
- cout << "\nSciagnelam: " << DeQueue ( &fifo );
- cout << "\nUsuwam z kolejki: \n";
- PrintTab ( &fifo, 4 );
- }
- cout << "\nWpisz liczbe: \n";
- cin >> x;
- EnQueue ( &fifo, x ); cout << "\nDodaje do kolejki: \n";
- PrintTab ( &fifo, 4 );
- cout << "\nWpisz liczbe: \n";
- cin >> x;
- EnQueue ( &fifo, x ); cout << "\nDodaje do kolejki: \n";
- PrintTab ( &fifo, 4 );
- RemoveQueue ( &fifo ); cout << "\nUsuwam kolejke\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement