자바에서 LinkedList를 구현하는 방법을 보자.
ArrayList와 내부적인 구현방법이 다르다는 것에 집중해서 배워보자.
linkedlist는 arryalist처럼 내부적으로 배열을 사용하지 않는다.
객체를 만들고, 객체와 객체를 참조(연결)하는 방식의 linkedlist
노드(버텍스/엘리먼트)... 만들 거다
각각의 노드는 링크필드(변수)를 통해 연결될 것이다.
헤드 - 링크드리스트에서 누가 첫번째 노드인가?
테일 - 누가 끝 노드인가? <-이 정보를 유지할 수도, 안할 수도 있는데, 이 수업에서는 이 정보를 유지하기로 한다.
사이즈
https://opentutorials.org/module/1335/8857
요거 기반으로 공부한다.
이클립스에서 list_linkedlist.implementation이라는 패키지에 클래스를 두 개 만들어줬다.
하나는 구동할 Main클래스, 하나는 메서드를 구현할 LinkedList클래스
LinkedList에서 가장 중요한 것이 노드의 구현이다. ( 노드 = 데이터가 저장되는 그릇과 같음 )
오타: 11줄에 imput 아니고 input
+노드 객체는 리스트의 내부 부품이기 때문에 외부에는 노출되지 않는 것이 좋다. 그래서 private로 지정한다. 사용자는 이 객체에 대해서 알 필요가 없고, 단지 값을 넣고 빼는 것으로 충분하다.
+head는 첫번째 노드를 지정하는 참조값.
+tail은 마지막 노드.
+size는 노드의 크기
+노드 변경할 때마다 값을 수정해야 한다.
+tail이나 size는 마지막 노드를 찾거나 노드의 수를 셀 때 연산의 횟수를 획기적으로 줄여준다.
+객체 Node는 내부적으로 data와 next변수를 가지고 있다. data는 노드의 값, next는 다음 노드를 가리키는 참조값.
객체생성까지는 했다. 다음 단계로 진행하면서 점점 더 이해할 수 있을 것 같다.
다음 글은 데이터 추가하기 구현이다.
'자료구조 + 알고리즘' 카테고리의 다른 글
[자료구조] LinkedList 구현 - 데이터 추가 / addLast[Java] (0) | 2020.07.06 |
---|---|
[자료구조] LinkedList 구현 - 데이터 추가 / addFirst[Java] (0) | 2020.04.21 |
[자료구조] Linked list 데이터 조회 [VisuAlgo.net] (0) | 2020.04.02 |
[자료구조] Linked list 데이터 삭제 [VisuAlgo.net] (0) | 2020.04.02 |
[자료구조] Linked list 데이터 추가 [VisuAlgo.net] (0) | 2020.03.30 |