티스토리 뷰
stack
- FILO : First In Last Out
- 처음에 넣는 값이 제일 나중에 나온다
queue
- FIFO : First In First Out
- 처음에 넣는 값이 제일 처음에 나온다
Stack Queue
Memory
#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;
};
MyStack
class MyStack : virtual public Memory { //stack
public:
void push(int i) {
Memory::m[count++] = i;
}
int pop() {
if (empty()) {
return Memory::m[--count];
}
else {
return -1;
}
}
bool full() { //지정해준 데이터 용량이 다 차면 예외처리
if (count == 20) {
cout << "FULL" << endl;
return false;
}
else
return true;
}
bool empty() { //삭제할 데이터가 업으면 예외처리
if (count == 0) {
cout << "EMPTY" << endl;
count = 0;
return false;
}
else
return true;
}
};
MyQueue
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;
}
};
Main
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;
}
}
}
}
}
'LANGUAGE > C++' 카테고리의 다른 글
[C++] OPERATOR FUNCTION - 연산자 함수 (0) | 2018.03.14 |
---|---|
[C++] FRIEND (0) | 2018.03.14 |
[C++] VIRTUAL FUNCTION - 가상 함수 (0) | 2018.03.13 |
[C++] DYNAMIC BINDING - 동적 바인딩 (0) | 2018.03.13 |
[C++] ABSTRACT CLASS - 추상 클래스 (0) | 2018.03.13 |
댓글