스택과 큐의 정의는 위키를 참고
스택 → 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를 올려준다.
'프로그래밍 공부 > C++' 카테고리의 다른 글
정적할당과 동적할당 (0) | 2018.03.12 |
---|---|
주소, 포인터 (0) | 2018.03.12 |
참조(Reference) (0) | 2018.03.12 |
폭탄찾기게임 (for문 연습) (0) | 2018.03.10 |
구구단만들기 / 최대공약수, 최소공배수 구하기 (for문 연습) (0) | 2018.03.10 |