자료구조 이중 연결 리스트(Double Linked List) 자바로 구현
1. 개요 연결 리스트는 "노드" 에 객체를 담고, 포인터를 통해 연결되어있다. 단일 연결 리스트는 next 포인터로 앞으로 밖에 갈 수 없지만, 이중 연결 리스트는 prev, next 포인터 가 있어서 뒤로도 갈 수 있다. 단일 연결 리스트로 가장 마지막에 데이터를 넣으려면 처음부터 포인터를 타고 가야 하므로, 데이터가 100개면 100번, 1억개면 1억번 이동을 해야 하는데 이중 연결 리스트는 마지막에 tail이라는 더미 노드를 만들어놓고, 뒤로 갈 수 있기에, tail 에서 prev 포인터로 이동하면 데이터가 100만개가 있던, 1억개가 있던 1번의 동작으로 그 위치까지 이동할 수 있다. 또한, 삽입이나 삭제를 할 때도, head와 tail중, 가까운 곳에서 탐색을 시작하면, 데이터가 100만개면 ..
2022. 2. 14.
자료구조 배열 리스트 (ArrayList) 자바로 구현
1. 개요 자료구조인 배열 리스트를 자바로 구현하고, 메소드별 시간복잡도를 확인해본다. 우선 배열 리스트의 장단점을, 연결 리스트와 비교하며 확인해보자 장점 배열로 구현되어 있으므로, 인덱스 번호로 접근이 가능하고, 탐색시간이 아주 짧다. (연결 리스트의 경우, 원하는 데이터를 찾을 때까지, 포인터를 타고 이동하면서 찾아야 한다.) 단점 생성할 때, 크기를 정하고 생성해야 하는데, 크기가 작으면 데이터가 꽉 찼을 때, 다시 생성해줘야 하고, 크기가 크면 남는 공간만큼 메모리의 낭비가 생긴다 효율적으로 관리하기 위해, 연속적으로 데이터를 넣어줘야 하는데, 데이터의 추가와 삭제가 있을 경우, 데이터를 밀고 당겨야 하는 작업이 필요하고, 시간이 오래 걸린다. (배열의 크기가 50이고, 40개의 데이터가 차있다..
2022. 2. 13.