자바에서 이중 연결 리스트(DoublyLinkedList) - DoublyLinkedList in java
- 이중 연결 링스트의 장점은 단일 연결 리스트 보다 인덱스를 이용한 검색이 빠르다
- 단일 연결 리스트는 헤더에서 부터 검색을 하지만 이중연결 리스트는 양쪽에서 검색이 가능하다
- 단점은 구조가 복잡하며 메모리 소모가 단일 연결 리스트 보다는 있다
- 자바 콜렉션의 리스트는 이중 연결 리스트이다
1. DoubleLinkedList<E>.class
1) node.class
private class Node<E>{ private E data; private Node<E> pre; private Node<E> next; public Node(E data, Node pre, Node next){ this.data = data; this.pre = pre; this.next = next; } }
- 클래스 안의 중첩 클래스를 사용 하였다(가독성 좋다)
- pre 라는 변수가 추가 되었다(메모리 증가)
2) 정의
- size를 선언하여 보다 쉽게 제어가 가능하다
3) addFirst(E element)
- 앞에서 부터 요소를 추가 한다
4) addLast(E element)
- 뒤에서 부터 요소 추가
5) node(int index)
- 인덱스를 이용하여 특정 노드를 찾는다. 이를 이용하여 특정 위치의 삽입/삭제가 가능하다
- 인덱스 값을 2로 나누어 작은 값은 head에서 부터 찾고 큰 값은 tail 에서 부터 찾는다
6) add(int x, E element)
- 원하는 위치에 데이터를 삽입한다
- 가운데 삽입 하기 때문에 앞뒤로 연결을 해야 한다
7. deleteFirst()
- 앞의 데이터를 삭제한다
8. deleteLast()
- 뒤의 데이터를 삭제한다
9. delete(int x)
- 특정 인덱스의 데이터를 삭제한다
10. get(int x)
- 데이터를 가져온다
11. indexOf(E element)
- 요소가 있는지 검사한다
- 있다면 index번호를 반환하고 없으면 -1을 반환한다
12. isNullCheck(), toString()
- 리스트의 값이 있는지 여부와 추가/삭제된 데이터를 확인 할 수 있는 함수
13. size()
14. clear()
14. main()
'etc > study' 카테고리의 다른 글
960 그리드 시스템 (0) | 2018.02.19 |
---|---|
자바스크립트 클릭이벤트 click() (0) | 2018.02.09 |
요소 가운데 정렬 (0) | 2018.02.02 |
[Study] 2017-04-09 링크드리스트 (0) | 2017.04.09 |