자바에서 LinkedList를 구현하는 방법을 보자.
ArrayList와 내부적인 구현방법이 다르다는 것에 집중해서 배워보자.
linkedlist는 arryalist처럼 내부적으로 배열을 사용하지 않는다.
객체를 만들고, 객체와 객체를 참조(연결)하는 방식의 linkedlist
노드(버텍스/엘리먼트)... 만들 거다
각각의 노드는 링크필드(변수)를 통해 연결될 것이다.
헤드 - 링크드리스트에서 누가 첫번째 노드인가?
테일 - 누가 끝 노드인가? <-이 정보를 유지할 수도, 안할 수도 있는데, 이 수업에서는 이 정보를 유지하기로 한다.
사이즈
https://opentutorials.org/module/1335/8857
LinkedList - Java 구현 - Data Structure (자료구조)
여기서는 Java에서 LinkedList를 구현하는 방법을 알아보겠습니다. LinkedList의 사용방법은 이미 ArrayList API 시간에 살펴봤습니다. ArrayList와 LinkedList 모두 List에 대해서 구현방법만 달리한 것입니다. 따라서 사용방법은 거의 같습니다. 전체소스 코드는 다음 링크에 있습니다. http://opentutorials.org/module/1335/8857#entirecode 객체생성 우선 두개의 파일을 만들겠습니
opentutorials.org
요거 기반으로 공부한다.
이클립스에서 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] (2) | 2020.04.02 |
[자료구조] Linked list 데이터 추가 [VisuAlgo.net] (0) | 2020.03.30 |