02 배열, 연결 리스트 - 이중 연결 리스트, Iterator, 원형 연결 리스트
단일 연결 리스트를 사용하면서 많은 불편을 겪었을 것입니다. 앞으로만 이동할 수 있다는 한계점 때문에 뒤로 탐색해야 하는 것이 불가능합니다. 그래서 이런 문제를 해결하기 위해, next를 확장하여 특정 노드의 뒷 노드만 이어주는것이 아니라, 앞 노드까지 이어줄 수 있도록 할 것입니다. 그렇다면 연결 리스트의 구조는 다음과 같이 변경될 것입니다. 크게 어려운 것은 없습니다. 단순히 단일 연결 리스트에 추가적으로 prev가 생성된 것 이외엔 큰 차이가 없습니다. 이처럼 이중 연결 리스트 역시 단일 연결 리스트와 마찬가지로 삽입, 삭제, 탐색이 모두 가능한 자료구조 입니다. 이때 탐색은 방향성이 양쪽에서 있다고는 하지만, 어쨌든 일일이 확인해야 하므로 O(N) 이라는 시간이 소요됩니다. 또, 삽입, 삭제의 경..
2023. 8. 8.
02 배열, 연결 리스트 - 배열, 동적배열, 단일연결리스트
01. 배열 그동안 우리는 많은 데이터를 저장하기 위해 주로 배열을 사용했습니다. 이후에는 배열이 아닌 수많은 자료구조에 대해 학습하겠지만, 일단 배열의 특성을 이해하고 어떤 장점과 단점이 있는지 알아봅시다. 우리는 배열로 무엇을 하나요? 주로 값을 담고, 값을 배열에서 삭제하고, 원하는 값을 배열에서 찾습니다. 이런 삽입, 삭제, 탐색 연산을 일반적으로 기본 연산이라고 부릅니다. 각각의 시간복잡도를 생각해봅시다. 삽입 실제로는 값을 어디에 삽입하냐에 따라 시간복잡도는 달라집니다. 다만, 보통 시간복잡도라 부를 때에는 최악의 상황에서의 시간복잡도를 얘기합니다. 배열이 주어졌을 때, 앞이나 가운데에 값을 넣는다고 가정합시다. 이렇게 되면 다음과 같이 새로운 값이 들어갈 자리를 확보하기 위해 다른 값들이 한..
2023. 8. 4.