스택과 비교해 보며 큐 자료 구조에 대해 알아봅시다. 이번 글에서는 java로 `양방향 큐(deque)`를 `이중 연결 리스트(doubly linked list)`로 구현합니다. 자료구조, 알고리즘 시리즈 모아보기 큐 `큐(queue)`는 이름 그대로 줄 서는 것과 같습니다.(줄 서 있는 것을 미국에서는 line이라고 하지만 영국에서는 queue라고 합니다.) 줄을 설 때를 생각해 보면 먼저 온 사람이 먼저 원하는 것을 얻습니다. 늦게 온 사람은 늦게 얻죠. 이런 구조를 `FIFO(First In First Out)`이라 합니다. - 연산 큐 또한 스택과 마찬가지로 `추상 자료 유형(Abstract Data Type)`으로 연산(행위)으로 정의됩니다. enqueue: 새로운 요소를 자료 구조에 추가 de..
java 구현
스택 자료구조에 대해 알아보고 java로 구현해 봅시다. 자료구조, 알고리즘 시리즈 모아보기 스택 `스택(stack)`은 이름 그대로 자료를 쌓아 놨다고 생각하는 `추상 자료 유형(Abstract Data Type)`입니다. 흔히 프링글스, 팬케이크로 예시를 듭니다. 가장 마지막에 프링글스 통에 넣은 프링글스 칩, 가장 마지막에 쌓은 팬케이크는 바로 먹을 수 있지만 가장 예전에 넣은(처음 넣은) 것은 꺼내기 힘듭니다. 스택은 위 예시와 같이 마지막에 넣은 것이 처음으로 나오는 `LIFO(Last In First Out)`구조로 최신 순으로 자료에 접근이 가능합니다. - 연산 스택은 추상 자료 유형으로 다음과 같은 연산(행위)으로 정의됩니다. 스택은 크게 push와 pop이라는 두 개의 연산으로 정의됩니다..
연결 리스트의 가장 기본이 되는 단일 연결 리스트로 연결 리스트를 이해해 봅시다. 자료구조, 알고리즘 시리즈 모아보기 연결 리스트 `연결 리스트(linked list)`는 데이터와 다음 데이터의 위치를 함께 저장하여 데이터들을 체인처럼 연결하는 자료 구조입니다. 여기서 저장되는 자료의 단위(데이터와 다음 자료의 위치를 묶은 구조체)를 `노드(node)`라고 부릅니다. 다시 말하면 연결 리스트는 데이터와 다음 노드의 참조값을 갖는 노드들로 연결된 자료 구조입니다. 연결 리스트는 연결되는 방법에 따라 `단일 연결 리스트(singly linked list)`, `이중 연결 리스트(doubly linked list)`, `다중 연결 리스트(multi-linked list)`, `원형 연결 리스트(circular..