2017-04-09 링크드 리스트
1. Javascript
2. Java
- 링크드 리스트는 데이터 추가 삭제시에 효율적이다
- 메모리가 허용되는 한 계속 추가 할 수 있다
1. Node<T>.class
- 위에 있는 data/next의 한 블록을 노드라고 한다
- 링크드 리스트를 구현하기 위해선 노드가 필요하다
- data는 노드의 값이면 next는 다음 노드를 가르키기 위한 주소 값이 들어간다
2. SingleLinkedList<T>.class
1) 변수 정의
- head, tail 객체를 선언한다. head와 tail은 노드의 추가 삭제시의 참고가 된다
- head, tail은 하나의 노드라기 보다는 노드들을 컨트롤 할 수 있는 설명서의 역할
- size는 엘리먼트의 크기를 나타 낸다
2) addLast(T element)
- 노드를 뒤에서 추가한다
- 노드가 없을 시에 처음 head와 tail은 모두 처음 추가된 노드를 가르키게 된다
- 이후에 추가된 노드는 tail 값을 참조하여 추가한다
- 처음 추가된 노드가 얕은 복사(shallow copy) 과정이 일어나서 tail의 next값을 셋팅 하더라도 앞 노드의 다음 주소값을 셋팅 하는 효과가 일어난다
3) addFirst(T element)
- head의 값을 참조 하여 앞에 노드를 추가한다
- 처음 노드가 추가 되는 거라면 tail을 새로운 노드로 지정
4) node(int x)
- 특정 노드의 위치를 찾는 함수이다
- 이 함수를 이용하여 특정위치 추가/삭제 또는 데이터 가져오기가 가능하다
- head를 시작으로 계속 다음 노드 값을 추적하여 최종 인덱스 의 값을 찾는다
5) add(T element, int x)
- 특정 위치에 노드를 삽입한다
- index - 1은 원하는 위치의 값은 바로 그 뒤의 노드가 알기 때문에 바로뒤의 노드를 이용하여 삽입한다
6) deleteFirst()
- 앞의 노드 삭제
- head를 앞의 노드가 가르키는 값으로 지정한다
7) delete(int T)
- 특정 위치의 노드를 삭제한다
- node()를 이용하여 위치를 찾고 사이의 연결 고리를 이어준다
8) deleteLast()
- 마지막 노드 삭제
9) toString()
- 요소의 상태를 알 수 있도록 화면에 출력한다
10) get()
- 요소 값 가져오기
11) main()
'etc > study' 카테고리의 다른 글
960 그리드 시스템 (0) | 2018.02.19 |
---|---|
자바스크립트 클릭이벤트 click() (0) | 2018.02.09 |
요소 가운데 정렬 (0) | 2018.02.02 |
[study] 2017-04-16 더블링크드리스트 (0) | 2017.04.16 |