Recent Posts
«   2025/01   »
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
Today
Total
관리 메뉴

Try

[알고리즘/자료구조] 큐 (Queue) 본문

Algorithm/Algorithm 기초

[알고리즘/자료구조] 큐 (Queue)

HAS3ONG 2018. 11. 11. 18:42

큐 ( Queue)


컴퓨터의 기본적인 자료 구조의 한가지로, 먼저 집어 넣은 데이터가 먼저 나오는 FIFO (First In First Out)구조로 저장하는 형식을 말한다. 영어 단어 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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/*
/*    
/*    khsh5592@naver.com
/*    has3ong.tistory.com
/*    
/*    2018 - 11 - 11
/*
*/
 
 
#include <stdio.h>
#include <iostream>
#include <conio.h>
 
using namespace std;
 
class Queue_Node
{
private:
    int Data;
 
public:
    Queue_Node* next_Node;
    Queue_Node* prev_Node;
 
    Queue_Node(int Data)
    {
        this->Data = Data;
        this->next_Node = NULL;
        this->prev_Node = NULL;
    }
    int Queue_Node_GetValue()
    {
        return this->Data;
    }
};
 
class Queue
{
public:
    int count;
    Queue_Node* first;
    Queue_Node* last;
 
    Queue()
    {
        count = 0;
        this->first = NULL;
        this->last = NULL;
    }
 
    void Enqueue(int Data)
    {
        Queue_Node* new_Node = new Queue_Node(Data);
        if(first == NULL)
        {
            first = new_Node;
            last = new_Node;
        }
        else
        {
            last->next_Node = new_Node;
            new_Node->prev_Node = last;
            last = last->next_Node;
        }
        count++;
    }
 
    int Dequeue()
    {
        int item;
        item = first->Queue_Node_GetValue();
 
        Queue_Node* temp;
        temp = first;
        first = first->next_Node;
        delete(temp);
 
        count--;
 
        return item;
    }
 
    void print()
    {
        Queue_Node* temp;
        temp = first;
        for(int i = 0; i < count; i++)
        {
            cout << " [ " << temp->Queue_Node_GetValue() << " ]";
            temp = temp -> next_Node;
        }
    }
};
void main()
{
    Queue Q;
    Q.Enqueue(5);
    Q.Enqueue(13);
    Q.Enqueue(36);
    Q.Enqueue(97);
    Q.Enqueue(8);
    Q.Dequeue();
    Q.print();
    getch();
}
cs




결과화면








출처


위키피디아

https://en.wikipedia.org/wiki/Queueing_theory#Service_disciplines

Comments