나의개발일지
Stack / Queue 본문
728x90
스택 ( Stack )
스택이란 물건을 쌓아 올리듯 자료를 쌓아 올린 형태의 자료구조이다.
스택에 저장된 자료는 선형 구조를 갖는다.
스택은 후입선출구조 (LIFO, Last in first Out) 구조를 갖는다
주요 연산
- push : 저장소에 자료를 저장한다.
- pop : 저장소에서 자료를 꺼낸다
- peek : 스택의 top에 있는 item(원소)를 반환한다 => 원소를 꺼내는 것이 아닌 확인하는 것
빈 스택에 원소 ABC를 차례로 삽입 후 한번 삭제하는 연산과정
중위 표기식, 후위 표기식 ( 스택 활용)
1. 수식의 각 연산자에 대해서 우선순위에 따라 괄호를 사용하여 다시 표현한다.
2. 각 연산자를 그에 대응하는 오른쪽 괄호의 뒤로 이동시킨다.
3. 괄호를 제거한다.
예 ) A * B - C / D
1 단계 : ( (A * B) - ( c / D ) )
2 단계 : ( (A B) * (C D)/ ) -
3 단계 : AB*CD/-
후위 표기법의 수식을 스택을 이용하여 계산
1. 피연산자를 만나면 스택에 push한다.
2. 연산자를 만나면 필요한 만큼의 피연산자를 스택에서 pop하여 연산하고, 연산결과를 다시 스택에 push한다.
3. 수식이 끝나면, 마지막으로 스택을 pop하여 출력한다.
큐 ( Queue )
- 큐도 스택과 마찬가지로 삽입과 삭제의 위치가 제한적인 자료구조
- 선입선출구조(FIFO, First In First Out)
큐의 기본 연산
삽입 : enQueue ( offer(); )
삭제 : deQueue ( poll(); )
일반적으로
큐의 front는 맨앞을 가리키고, rear는 맨뒤요소를 가리킨다.
삽입 연산시 rear값은 증가하고, 삭제 연산시에도 front값은 증가한다.
< 큐의 삽입 연산 >
< 큐의 삭제 연산 >
728x90
반응형
'알고리즘' 카테고리의 다른 글
최소신장트리(MST) feat. KRUSKAL (5) | 2024.03.14 |
---|---|
서로소 집합(Union-Find) (1) | 2024.03.13 |
그래프 (0) | 2024.02.16 |
분할정복, 백트래킹 (0) | 2024.02.15 |
탐욕알고리즘 (0) | 2024.02.15 |