-
덱알고리즘 스터디 01/강의 정리 2022. 11. 21. 14:18
stl vector에서 제공해주는 기능을 stl deque에서도 대부분 제공 +push_front
앞쪽에서의 추가 제거가 필요하지 않으면 굳이 deque 쓸 필요 없음배열로 구현하는 덱
#include <iostream> using namespace std; const int MX = 1000005; int dat[2 * MX + 1]; int head = MX, tail = MX; // 앞으로도 뒤로도 확장 가능해야 하기 때문에 인덱스의 초기값을 중간으로 세팅함 // head 는 맨 앞의 원소를 가리키고 tail은 맨 뒤의 원소 하나 뒤를 가리킴 void push_front(int x) { // 아니 암만 정신 없을 때 풀었어도 그렇지 이게 뭐니 // dat[head--]; dat[--head] = x; } void push_back(int x) { // dat[tail++]; dat[tail++] = x; } void pop_front() { // 이거 할 필요 없대 if (head < 2 * MX + 1) head++; } void pop_back() { // 마찬가지 if (tail > 2 * MX + 1) tail--; } int front() { return dat[head]; } int back() { return dat[tail-1]; // tail은 마지막 원소 +1 을 가리키니까 -1 해줌 } void test() { push_back(30); // 30 cout << front() << '\n'; // 30 cout << back() << '\n'; // 30 push_front(25); // 25 30 push_back(12); // 25 30 12 cout << back() << '\n'; // 12 push_back(62); // 25 30 12 62 pop_front(); // 30 12 62 cout << front() << '\n'; // 30 pop_front(); // 12 62 cout << back() << '\n'; // 62 } int main(void) { test(); }
'알고리즘 스터디 01 > 강의 정리' 카테고리의 다른 글
DFS (0) 2023.04.05 스택의 활용 ( 수식의 괄호쌍 ) (0) 2022.11.21 큐 (0) 2022.11.21 스택 (0) 2022.11.21 연결리스트 (0) 2022.11.21