SlideShare uma empresa Scribd logo
1 de 4
Baixar para ler offline
Queue Data Structure
Queue is a data structure that maintain "First In First Out" (FIFO) order. And can
be viewed as people queueing up to buy a ticket. In programming, queue is
usually used as a data structure for BFS (Breadth First Search).

Queue operations
Operations on queue Q are :
1. enqueue - insert item at the back of queue Q
2. dequeue - return (and virtually remove) the front item from queue Q
3. init - intialize queue Q, reset all variables.

There are other operations such as full and empty, but usually we don't use this
when doing Valladolid Online Judge or Programming Contest Problems, since we
know the largest size of queue. You can implement those operations by yourself :)
Fairly easy!

Implementation in C
/* Problem   :   Queue - Data Structure
 * Author    :   Stephanus
 * Lang.     :   C
 * Date      :   20 January 2004
 */

#include < stdio.h >

#define QUEUE_SIZE 100

typedef struct {
        int q[QUEUE_SIZE];
        int first,last;
        int count;
} queue;

void init_queue(queue *q)
{
        q->first = 0;
        q->last = QUEUE_SIZE - 1;
        q->count = 0;
}

void enqueue(queue *q,int x)
{
        q->last = (q->last + 1) % QUEUE_SIZE;
        q->q[ q->last ] = x;
        q->count = q->count + 1;
}

int dequeue(queue *q)
{
        int x = q->q[ q->first ];
        q->first = (q->first + 1) % QUEUE_SIZE;
        q->count = q->count - 1;
return x;
}

int main()
{
        queue q;

          init_queue(&q);

          enqueue(&q,1);
          enqueue(&q,2);
          enqueue(&q,3);

          while (q.count)
                  printf("%dn",dequeue(&q));

          return 0;
}


Implementation in C++
/* Problem   :   Queue - Data Structure
 * Author    :   Stephanus
 * Lang.     :   C++
 * Date      :   20 January 2004
 */

#include < iostream >

#define QUEUE_SIZE 100

using namespace std;

class Queue {
         int q[QUEUE_SIZE];
         int first,last;
         int count;

public:
          Queue();
          void enqueue(int x);
          int dequeue();
          int getSize();
};

Queue::Queue()
{
         first = 0;
         last = QUEUE_SIZE - 1;
         count = 0;
}

void Queue::enqueue(int x)
{
         last = (last + 1) % QUEUE_SIZE;
q[last] = x;
        count++;
}

int Queue::dequeue()
{
        int x = q[first];
        first = (first + 1) % QUEUE_SIZE;
        count--;
        return x;
}

int Queue::getSize()
{
        return count;
}

int main()
{
        Queue q;

       q.enqueue(1);
       q.enqueue(2);
       q.enqueue(3);

       while (q.getSize())
               cout << q.dequeue() << endl;

       return 0;
}


Implementation in JAVA
/* Problem   :   Queue - Data Structure
 * Author    :   Stephanus
 * Lang.     :   JAVA
 * Date      :   20 January 2004
 */

class Queue
{
        final int QUEUE_SIZE = 100;

       private int[] q = new int[QUEUE_SIZE];
       private int first,last;
       private int count;

       Queue()
       {
                   first = 0;
                   last = QUEUE_SIZE - 1;
                   count = 0;
       }

       public void enqueue(int x)
{
               last = (last + 1) % QUEUE_SIZE;
               q[last] = x;
               count++;
       }

       public int dequeue()
       {
               int x = q[first];
               first = (first + 1) % QUEUE_SIZE;
               count--;
               return x;
       }

       public int getSize()
       {
               return count;
       }
}

public class queue
{
        public static void main(String[] args)
        {
                Queue q = new Queue();

               q.enqueue(1);
               q.enqueue(2);
               q.enqueue(3);

               while (q.getSize() != 0)
                       System.out.println(q.dequeue());
       }
}

Mais conteúdo relacionado

Destaque

QUÈ ÉS MOODLE?
QUÈ ÉS MOODLE?QUÈ ÉS MOODLE?
QUÈ ÉS MOODLE?jjcobmkars
 
Dy3+ doped Lithium Sodium Bismuth Borate Glasses for Yellow Luminescent Photo...
Dy3+ doped Lithium Sodium Bismuth Borate Glasses for Yellow Luminescent Photo...Dy3+ doped Lithium Sodium Bismuth Borate Glasses for Yellow Luminescent Photo...
Dy3+ doped Lithium Sodium Bismuth Borate Glasses for Yellow Luminescent Photo...IJERA Editor
 
O mundo reduzido_a_100_pessoas_e_seus_dados
O mundo reduzido_a_100_pessoas_e_seus_dadosO mundo reduzido_a_100_pessoas_e_seus_dados
O mundo reduzido_a_100_pessoas_e_seus_dadosJó Fernan
 
Apresentação powerpoint Global
Apresentação powerpoint GlobalApresentação powerpoint Global
Apresentação powerpoint GlobalEusoutop Brasil
 
Experiencias de implantación de Empresa 2.0 en Andalucía. Margarita Álvarez (...
Experiencias de implantación de Empresa 2.0 en Andalucía. Margarita Álvarez (...Experiencias de implantación de Empresa 2.0 en Andalucía. Margarita Álvarez (...
Experiencias de implantación de Empresa 2.0 en Andalucía. Margarita Álvarez (...eMaCMAS
 
Convite para Chá de Bebê Menino - Azul - 2
Convite para Chá de Bebê Menino - Azul - 2Convite para Chá de Bebê Menino - Azul - 2
Convite para Chá de Bebê Menino - Azul - 2monalisadiasdesouza
 
apresentação click dreams
apresentação click dreamsapresentação click dreams
apresentação click dreamsMateus Iida
 
Tablas dinamicas
Tablas dinamicasTablas dinamicas
Tablas dinamicasitucusco
 
Html规范常见问题举例
Html规范常见问题举例Html规范常见问题举例
Html规范常见问题举例noahlu
 
Dios es como la miel
Dios es como la mielDios es como la miel
Dios es como la mielsandrojp
 
Un poco de Historia
Un poco de HistoriaUn poco de Historia
Un poco de Historiagretelmdq
 
Presentatie nmpc participatie final
Presentatie nmpc participatie finalPresentatie nmpc participatie final
Presentatie nmpc participatie finalWernrd
 

Destaque (20)

QUÈ ÉS MOODLE?
QUÈ ÉS MOODLE?QUÈ ÉS MOODLE?
QUÈ ÉS MOODLE?
 
Dy3+ doped Lithium Sodium Bismuth Borate Glasses for Yellow Luminescent Photo...
Dy3+ doped Lithium Sodium Bismuth Borate Glasses for Yellow Luminescent Photo...Dy3+ doped Lithium Sodium Bismuth Borate Glasses for Yellow Luminescent Photo...
Dy3+ doped Lithium Sodium Bismuth Borate Glasses for Yellow Luminescent Photo...
 
O mundo reduzido_a_100_pessoas_e_seus_dados
O mundo reduzido_a_100_pessoas_e_seus_dadosO mundo reduzido_a_100_pessoas_e_seus_dados
O mundo reduzido_a_100_pessoas_e_seus_dados
 
Amit Ranjan
Amit RanjanAmit Ranjan
Amit Ranjan
 
Apresentação powerpoint Global
Apresentação powerpoint GlobalApresentação powerpoint Global
Apresentação powerpoint Global
 
Presentación tic
Presentación ticPresentación tic
Presentación tic
 
Funciones
FuncionesFunciones
Funciones
 
Pablonerudah
PablonerudahPablonerudah
Pablonerudah
 
Lasregla1
Lasregla1Lasregla1
Lasregla1
 
Experiencias de implantación de Empresa 2.0 en Andalucía. Margarita Álvarez (...
Experiencias de implantación de Empresa 2.0 en Andalucía. Margarita Álvarez (...Experiencias de implantación de Empresa 2.0 en Andalucía. Margarita Álvarez (...
Experiencias de implantación de Empresa 2.0 en Andalucía. Margarita Álvarez (...
 
Convite para Chá de Bebê Menino - Azul - 2
Convite para Chá de Bebê Menino - Azul - 2Convite para Chá de Bebê Menino - Azul - 2
Convite para Chá de Bebê Menino - Azul - 2
 
apresentação click dreams
apresentação click dreamsapresentação click dreams
apresentação click dreams
 
Tablas dinamicas
Tablas dinamicasTablas dinamicas
Tablas dinamicas
 
Presentación1
Presentación1Presentación1
Presentación1
 
Angeles verdes
Angeles verdesAngeles verdes
Angeles verdes
 
Html规范常见问题举例
Html规范常见问题举例Html规范常见问题举例
Html规范常见问题举例
 
Dios es como la miel
Dios es como la mielDios es como la miel
Dios es como la miel
 
Un poco de Historia
Un poco de HistoriaUn poco de Historia
Un poco de Historia
 
Presentatie nmpc participatie final
Presentatie nmpc participatie finalPresentatie nmpc participatie final
Presentatie nmpc participatie final
 
GTP
GTPGTP
GTP
 

Queue

  • 1. Queue Data Structure Queue is a data structure that maintain "First In First Out" (FIFO) order. And can be viewed as people queueing up to buy a ticket. In programming, queue is usually used as a data structure for BFS (Breadth First Search). Queue operations Operations on queue Q are : 1. enqueue - insert item at the back of queue Q 2. dequeue - return (and virtually remove) the front item from queue Q 3. init - intialize queue Q, reset all variables. There are other operations such as full and empty, but usually we don't use this when doing Valladolid Online Judge or Programming Contest Problems, since we know the largest size of queue. You can implement those operations by yourself :) Fairly easy! Implementation in C /* Problem : Queue - Data Structure * Author : Stephanus * Lang. : C * Date : 20 January 2004 */ #include < stdio.h > #define QUEUE_SIZE 100 typedef struct { int q[QUEUE_SIZE]; int first,last; int count; } queue; void init_queue(queue *q) { q->first = 0; q->last = QUEUE_SIZE - 1; q->count = 0; } void enqueue(queue *q,int x) { q->last = (q->last + 1) % QUEUE_SIZE; q->q[ q->last ] = x; q->count = q->count + 1; } int dequeue(queue *q) { int x = q->q[ q->first ]; q->first = (q->first + 1) % QUEUE_SIZE; q->count = q->count - 1;
  • 2. return x; } int main() { queue q; init_queue(&q); enqueue(&q,1); enqueue(&q,2); enqueue(&q,3); while (q.count) printf("%dn",dequeue(&q)); return 0; } Implementation in C++ /* Problem : Queue - Data Structure * Author : Stephanus * Lang. : C++ * Date : 20 January 2004 */ #include < iostream > #define QUEUE_SIZE 100 using namespace std; class Queue { int q[QUEUE_SIZE]; int first,last; int count; public: Queue(); void enqueue(int x); int dequeue(); int getSize(); }; Queue::Queue() { first = 0; last = QUEUE_SIZE - 1; count = 0; } void Queue::enqueue(int x) { last = (last + 1) % QUEUE_SIZE;
  • 3. q[last] = x; count++; } int Queue::dequeue() { int x = q[first]; first = (first + 1) % QUEUE_SIZE; count--; return x; } int Queue::getSize() { return count; } int main() { Queue q; q.enqueue(1); q.enqueue(2); q.enqueue(3); while (q.getSize()) cout << q.dequeue() << endl; return 0; } Implementation in JAVA /* Problem : Queue - Data Structure * Author : Stephanus * Lang. : JAVA * Date : 20 January 2004 */ class Queue { final int QUEUE_SIZE = 100; private int[] q = new int[QUEUE_SIZE]; private int first,last; private int count; Queue() { first = 0; last = QUEUE_SIZE - 1; count = 0; } public void enqueue(int x)
  • 4. { last = (last + 1) % QUEUE_SIZE; q[last] = x; count++; } public int dequeue() { int x = q[first]; first = (first + 1) % QUEUE_SIZE; count--; return x; } public int getSize() { return count; } } public class queue { public static void main(String[] args) { Queue q = new Queue(); q.enqueue(1); q.enqueue(2); q.enqueue(3); while (q.getSize() != 0) System.out.println(q.dequeue()); } }