[자료구조] 덱 (Deque)
무엇인가?doubled-ended queue의 약자로, 양 끝에서 데이터를 추가하거나 삭제할 수 있는 자료구조덱 자료구조를 사용하여, 큐와 스택을 선택적으로 구현할 수 있다.(큐 : FIFO, 선입 선출 / 스택 : LIFO, 후입 선출) 왜 사용하는가?양방향 큐가 필요할 경우 사용양쪽 끝에서 요소를 추가하거나 제거해야 할 경우, 덱은 이를 효율적으로 수행할 수 있다.예를 들어, 사용자의 명령어를 undo(취소)하고 redo(재실행, )하는 기능을 구현할 때, 유용하다.데이터 스트림 처리데이터의 최신 항목과 가장 오래된 항목을 동시에 관리해야 할 때, 덱을 사용하면 쉽게 접근하고 업데이트할 수 있다.리소스 풀 관리여러 자원에 대한 접근을 관리할 때, 덱을 사용하면 자원을 효율적으로 추가하고 제거하는 데 ..
[자료구조] 양방향 연결리스트 (Doubly Linked List)
단방향 연결리스트와 양방향 연결리스트의 차이점- 연결리스트는 데이터의 연결이 한 방향으로 되어 있다. 그러나, 양방향연결리스트는 이름 그대로, 데이터끼리 양방향으로 연결되어 있다.단방향 연결리스트와 비교한 양방향 연결리스트의 장단점장점- 각 노드의 앞과 뒤에 있는 노드들의 정보를 저장하기 때문에, 리스트의 앞, 뒤에서 모두 접근이 가능하다.단점- 단방향 연결리스트보다, 메모리의 사용이 좀 더 많다.사용처본인의 경우, 큐 자료구조를 만들기 위해서 사용했다.큐는 FIFO 특성을 가진 자료구조이다.즉 먼저 들어온 것이 먼저 나가야한다.단방향 연결리스트를 사용해서 큐를 구현하게되면,"데이터의 삽입"은 편하지만,"데이터의 제거"가 필요할 경우, head에서 tail까지의 이동한 후, 데이터를 삭제해야한다. ..