어떠한 데이터를 추가하고 삭제하는 로직이 계속적으로 반복되어질 때 배열을 이용하게 된다면 추가하거나 삭제할 때마다 O(n)의 시간복잡도를 가지게 되는데 이러한 비효율성을 줄이기 위해서 연결리스트(LinkedList)를 사용한다. 연결리스트는 각각의 요소를 포인터로 연결한 선형 자료구조로 각 요소는 노드라 불리며 노드에는 데이터영역과 포인터영역으로 구성된다.
데이터를 추가하거나 삭제하는데에 O(1)의 시간복잡도를 가지게 된다.
단, 이 때 단순히 추가와 삭제에만 O(1)이 걸리는 것이고, 탐색을 할 때에는 O(n)의 시간복잡도를 가지기 때문에 탐색과 추가,삭제를 겹치게 구현하면 안된다.