4. Stack 과 Queue 공통사항 그냥 “개념”일 뿐이다 따라서 구현은 알아서 하면 된다. 보통 Linked List, 배열로 구현 스터디에선 배열로만 구현 Overflow와 Underflow가 존재한다. Overflow : 넣을 공간이 없는데 넣을 시 Underflow : 뺄 자료가 없는데 뺄 시
5. Stack LIFO(Last In First Out, 후입선출)이 Stack 마지막에 들어갔던 자료가 먼저 나옴 데이터의 위치를 가르치는 top
6. 일반적인 Stack의 함수 Push() // Stack에 Data를 넣음 Pop() // Stack에서 Data를 빼냄 Empty() // Stack이 비었나 확인 Full() // Stack이 꽉 찼나 확나
7. 함수 구현은 이렇게… int stack[MAX], top=0; int Empty(){ return top==0; } int Full(){ return MAX==top; } void Push(int item){ if(!Full()) stack[top++]=item; } int Pop(){ if(!Empty()) return stack[--top]; }
8. Quiz… Data 1 2 3 4 가 주어지고 Stack이 주어질때 다음은 어떤 연산을 거쳐야 나오나요? 1 2 3 4 PushPopPushPop PushPop PushPop 1 3 2 4 1 4 3 2 4 3 2 1 4 1 2 3
9. Queue FIFO(First In First Out, 선입선출)이 Queue 선형 큐와 원형 큐가 존재 스터디에서는 선형 큐만 Data가 들어갈 위치를 가르키는 rear 뺄 Data의 위치를 가리키는 front
10. 일반적인 Queue의 함수 Push() // Queue에 Data를 넣음 Pop() // Queue에서 Data를 빼냄 Empty() // Queue이 비었나 확인 Full() // Queue이 꽉 찼나 확나
11. 함수 구현은 이렇게… int queue[MAX], front=0, rear=0; int Empty(){ return front==rear; } int Full(){ return MAX==rear; } void Push(int item){ if(!Full()) queue[rear++]=item; } int Pop(){ if(!Empty()) return queue[front++]; }