"C++원형큐"에 해당되는 글 - 1건

Post

간단한 원형 큐를 만들어보았습니다.

빨리 간단하게 만든거라서 틀리거나 버그가 있을 수 있습니다.

추후에 수정하겠습니다.

제가 이해한대로 만든 거라서..

아무튼 이렇게 강제 공부를 하고 있네요 ㅋㅋㅋ

나름 장점이라면 장점인가 ㅋㅋ?


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
#include <iostream>
using namespace std;
 
#define MAX_QUEUE_COUNT 5
 
class CicleQueue
{
    int m_Queue[MAX_QUEUE_COUNT];
    int m_front;
    int m_end;
    int m_Count;
public:
    CicleQueue()
    {
        memset(m_Queue, 0sizeof(m_Queue));
        m_front        = 0;
        m_end        = 0;
        m_Count        = 0;
    }
 
    bool Push(int value)
    {
        if(isPull())
            return false;
 
        m_Queue[m_end] = value;
        m_end = (m_end+1) % MAX_QUEUE_COUNT;
        ++m_Count;
 
        if(MAX_QUEUE_COUNT == m_end)
            m_end = 0;
 
        return true;
    }
 
    int Pop()
    {
        int temp = m_Queue[m_front];
        m_Queue[m_front] = 0;
        
        m_front = (m_front + 1) % MAX_QUEUE_COUNT;
        --m_Count;
        return temp;
    }
 
    bool isPull()
    {
        if(m_Count == MAX_QUEUE_COUNT)
            return true;
        
        return false;
    }
 
    void Print()
    {
        if(m_end <= m_front)
        {
            for(int i = m_front, j = 0; j < MAX_QUEUE_COUNT; ++i, ++j)
            {
                cout<<m_Queue[i%MAX_QUEUE_COUNT]<<" ";
            }
        }
        else
        {
            for(int i = 0; i < MAX_QUEUE_COUNT; ++i)
                cout<< m_Queue[i]<<" ";
        }
 
        cout<<endl;
    }
};
 
void main()
{
    CicleQueue cicleQueue;
    cicleQueue.Push(1);
    cicleQueue.Push(2);
    cicleQueue.Push(3);
    cicleQueue.Print();
    cicleQueue.Pop();
    cicleQueue.Push(4);
    cicleQueue.Push(5);
    cicleQueue.Pop();
    cicleQueue.Print();
    cicleQueue.Push(6);
    cicleQueue.Push(7);
    cicleQueue.Print();
    cicleQueue.Push(8);    
    cicleQueue.Print();
}
cs


▲ top