스택과 큐의 정의는 위키를 참고

스택 → https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D

큐 → https://ko.wikipedia.org/wiki/%ED%81%90_(%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0)


스택 예제

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
int a[10];
int pos = -1// 스택 포지션
int input = 0// 메뉴확인 변수
int data; // 입력될 데이터가 저장될 변수
 
while (input != 3)
{
    cout << "메뉴를 선택하세요" << endl
        << "1.입력 / 2.출력 / 3.종료" << endl;
    cin >> input;
 
    if (input == 1)
    {
        if (pos == 9)
        {
            cout << "스택이 다찼습니다" << endl;
        }
        else
        {
            pos++;
            cout << "입력할 숫자 : ";
            cin >> data;
            a[pos] = data;
            cout << "입력이 완료되었습니다" << endl;
        }
    }
    else if (input == 2)
    {
        if (pos == -1)
        {
            cout << "스택에 자료가 없습니다" << endl;
        }
        else
        {
                cout << "출력된 숫자 : " << a[pos] << endl;
            pos--;
        }
    }
    cout << endl;
}
cs

스택은 LIFO이므로 현재 위치를 알려줄 데이터가 1개만 있으면 된다.


데이터를 입력받으면 pos값을 올려주고 값을 넣는다.

출력을 하면 데이터출력 후 pos값을 낮춰준다.




큐 예제

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
int b[10];
int pos1 = -1// 큐 들어올포지션
int pos2 = -1// 큐 나갈포지션
int input2 = 0// 메뉴확인 변수
int data2; // 입력될 데이터가 저장될 변수
 
while (input2 != 3)
{
    cout << "메뉴를 선택하세요" << endl
        << "1.입력 / 2.출력 / 3.종료" << endl;
    cin >> input2;
 
    if (input2 == 1)
    {
        pos1++;
        if (pos2 == -1)
            pos2++;
        cout << "입력할 숫자 : ";
        cin >> data2;
        b[pos1] = data2;
        cout << "입력이 완료되었습니다" << endl;
    }
    else if (input2 == 2)
    {
        cout << "출력된 숫자 : " << b[pos2] << endl;
        pos2++;
    }
    cout << endl;
}
cs

큐는 FIFO이므로 입력할 위치와 출력할 위치를 알려줄 데이터가 2개 필요하다.


따라서 입력받으면 pos1을 올려주고 데이터를 입력.

출력할때는 pos2에서 데이터를 출력하고 pos2를 올려준다.

Posted by misty_
,