ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2. 간단한 큐 구현하기 (C++)
    자료구조/Queue 2018. 9. 26. 18:33

    C++로 간단하게 큐를 구현해봤습니다.




    Node 클래스


    -Set_link : next노드를 연결


    -Get_data : 노드의 데이터 반환


    -Get_next : 노드의 다음 링크 반환




    Queue 클래스


    -push : tail에 노드 추가 후, tail을 현재 추가한 노드로


    -pop : head 노드 반환 후, head를 다음 노드로


    -front : head 반환


    -size : 현재 용량 반환


    -empty : 비어있으면 true 반환




    다음엔 STL queue의 사용법을 알아보겠습니다. 



    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    #include <iostream>
    using namespace std;
    class Node {
    private:
        int data;
        Node* next;
    public:
        Node();
        Node(int data) : data(data) {}
        void Set_link(Node* node) {
            next = node;
        }
        int Get_data() {
            return data;
        }
        Node* Get_next() {
            return next;
        }
    };
    class Queue {
    private:
        Node* head;
        Node* tail;
        size_t used;
        size_t capacity;
    public:
        Queue() {
            head = nullptr;
            tail = nullptr;
        }
        void push(Node* node) {
            if(head == nullptr) {
                head = node;
                tail = node;
            }
            else {
                tail->Set_link(node);
                tail = node;
            }
            used++;
        }
        void pop() {
            if(used == 0) {
                cout << "Queue underflow" << endl;
                return;
            }
            Node* node = head;
            head = head->Get_next();
            used--;
            delete[] node;
        }
        Node* front() {
            return head;
        }
        bool empty() {
            if(used == 0)
                return true;
            return false;
        }
        size_t size() {
            return used;
        }
    };
    int main() {
        Queue q;
        Node* first = new Node(1);
        q.push(first);
        Node* second = new Node(2);
        q.push(second);
        Node* third = new Node(3);
        q.push(third);
        
        while(!q.empty()) {
            cout << "size : " << q.size() << endl;
            Node* node = q.front();
            q.pop();
            cout << node->Get_data() << endl;
        }
        return 0;
    }
    cs


    반응형

    '자료구조 > Queue' 카테고리의 다른 글

    1. Queue 란?  (0) 2018.09.26

    댓글

Designed by Tistory.