본문 바로가기
Programming/C&C++

[C++] STACK / QUEUE

STACK / QUEUE






stack

- FILO : First In Last Out

- 처음에 넣는 값이 제일 나중에 나온다

 

queue

- FIFO : First In First Out

- 처음에 넣는 값이 제일 처음에 나온다


STACK

QUEUE


MyStack

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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
class Memory {
protected:
    int *m;
public:
    int count = 0;
    Memory() {
        m = new int[20];
    }
 
    virtual ~Memory() { //생성자 함수와 소멸자 함수는 세트
        delete[] m;
    }
 
    void push(int i) { //stack과 queue의 공통적을 데이터를 넣는 일을 하는 함수 
        if (full()) {
            m[count++= i;
        }
    }
 
    virtual int pop() = 0//순수 가상 함수
    virtual bool full() = 0;
    virtual bool empty() = 0;
 
};
 
cs


MyQueue

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
class MyQueue : virtual public Memory { //queue
public:
    int front = 0;
    void push(int i) {
        Memory::m[count] = i;
    }
 
    int pop() {
        if (empty()) {
            return Memory::m[front];
        }
        else {
            return -1;
        }
    }
 
    bool full() {
        if (count == 20 && front == 0) {
            cout << "FULL" << endl;
            return false;
        }
        else
            return true;
    }
 
    bool empty() {
        if (count == front) {
            cout << "EMPTY" << endl;
            return 
            count = front = 0;
            return false;
        }
        else
            return true;
    }
 
}; 
cs


Main

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
void main() {
    Memory *s;
    Memory *q;
 
    MyStack ms;
    MyQueue mq;
 
    int choose = 0;
    cout << "1.Stack  2.Queue 3.Exit" << endl;
    cout << "선택 : ";
    cin >> choose;
    switch (choose) {
        while (true) {
    case 1: {
        s = &ms;
        int sc = 0;
        cout << "1.Push  2.Pop" << endl;
        cout << "선택 : ";
        cin >> sc;
        switch (sc) {
            while (true) {
        case 1: { //하나씩 입력
            int i;
            cout << "입력 : ";
            cin >> i;
            s->push(i);
        }break;
        case 2: { //하나씩 삭제
            s->pop();
        }break;
            }break;
        }
    }
 
    case 2: {
        q = &mq;
        int qc = 0;
        cout << "1.Push  2.Pop" << endl;
        cout << "선택 : ";
        cin >> qc;
        switch (qc) {
            while (true) {
        case 1: { //하나씩 입력
            int i;
            cout << "입력 : ";
            cin >> i;
            q->push(i);
        }break;
        case 2: { //하나씩 삭제
            q->pop();
        }break;
            }break;
        }
    }
        }
    }
}
 
cs


'Programming > C&C++' 카테고리의 다른 글

[C/C++] Pointers  (1) 2018.12.27
[C++] TEMPLATE  (6) 2018.04.15
[C++] 클래스 상속 관계  (0) 2018.04.15
[C++] POINTER ARRAY  (0) 2018.04.15
[C++] DYNAMIC MEMORY  (1) 2018.04.15