summaryrefslogtreecommitdiff
path: root/structures/queue.h
blob: 368da01de5636d37d1fbb2a010068660aec53fbd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#pragma once

struct queue
{
    int inf;
    queue *next;
};

void push(queue *&h, queue *&t, int x)
{
    queue *r = new queue;
    r->inf = x;
    r->next = NULL;
    
    if (!h && !t)
        h = t = r;
    else
    {
        t->next = r;
        t = r;
    }
}

int pop(queue *&h, queue *&t)
{
    queue *r = h;
    int i = h->inf;
    h = h->next;

    if (!h) t = NULL;
    delete r;
    return i;
}