Java
에서 Linked List
데이터 구조 만들기
요소 모음을 효과적으로 관리하는 데이터 구조를 만드는 것은 프로그래밍에서 어려울 수 있습니다. 가장 일반적으로 사용되는 구조 중 하나가 바로 Linked List
입니다. 이 블로그 게시물에서는 Java 표준 라이브러리에 이미 내장된 클래스가 존재하더라도, Java
에서 Linked List
를 만드는 과정을 안내하겠습니다.
문제 이해하기
데이터 구조를 생각할 때 배열을 떠올릴 수 있지만, 때로는 배열이 부족한 경우가 있습니다. 여기서 링크드 리스트가 등장합니다. Linked List
는 배열의 크기를 조정할 필요 없이 효율적으로 요소를 삽입하고 삭제할 수 있게 해줍니다. 이 구조는 데이터와 다음 노드에 대한 참조를 포함하는 일련의 노드로 구성됩니다.
내장 옵션
Java는 java.util
패키지에 내장된 LinkedList
클래스를 제공하며, 이는 많은 상황에서 편리하고 적합합니다. 그러나 직접 구현하는 것은 데이터 구조의 동작에 대한 이해를 깊게 하고 더 많은 제어를 가능하게 합니다.
나만의 Linked List
만들기
아래에서 우리는 처음부터 간단한 Linked List
를 구축하는 과정을 살펴보겠습니다. 이 튜토리얼에서는 노드를 맨 앞에 삽입하고 삭제할 수 있는 단일 링크드 리스트에 집중하겠습니다.
1단계: Link 클래스 정의하기
먼저, 목록의 각 요소를 나타내는 Link
클래스를 생성해야 합니다. 코드는 다음과 같습니다.
class Link {
public int data1;
public double data2;
public Link nextLink;
// Link 생성자
public Link(int d1, double d2) {
data1 = d1;
data2 = d2;
}
// Link 데이터 출력
public void printLink() {
System.out.print("{" + data1 + ", " + data2 + "} ");
}
}
2단계: LinkList 클래스 정의하기
다음으로 전체 리스트를 위한 클래스를 만들어야 합니다:
class LinkList {
private Link first;
// LinkList 생성자
public LinkList() {
first = null;
}
// 리스트가 비어 있으면 true 반환
public boolean isEmpty() {
return first == null;
}
// 리스트의 맨 앞에 새로운 Link 삽입
public void insert(int d1, double d2) {
Link link = new Link(d1, d2);
link.nextLink = first;
first = link;
}
// 리스트 앞의 링크 삭제
public Link delete() {
Link temp = first;
if (first == null) {
return null; // 또는 예외 발생
}
first = first.nextLink;
return temp;
}
// 리스트의 모든 링크 출력
public void printList() {
Link currentLink = first;
System.out.print("List: ");
while (currentLink != null) {
currentLink.printLink();
currentLink = currentLink.nextLink;
}
System.out.println("");
}
}
3단계: LinkList 테스트하기
마지막으로 Linked List
를 테스트하기 위한 메인 메소드를 구현해 보겠습니다:
class LinkListTest {
public static void main(String[] args) {
LinkList list = new LinkList();
// 몇 개의 요소 삽입
list.insert(1, 1.01);
list.insert(2, 2.02);
list.insert(3, 3.03);
list.insert(4, 4.04);
list.insert(5, 5.05);
// 리스트 출력
list.printList();
// 요소 삭제
while (!list.isEmpty()) {
Link deletedLink = list.delete();
System.out.print("deleted: ");
deletedLink.printLink();
System.out.println("");
}
list.printList();
}
}
결론
이 블로그 게시물에서는 노드를 삽입, 삭제 및 출력하는 핵심 메서드를 갖춘 사용자 지정 Linked List
를 Java
에서 만드는 방법을 살펴보았습니다. Java 표준 라이브러리에 있는 기본 내장된 LinkedList
클래스는 여러 응용 프로그램에 충분할 수 있지만, 직접 구현하면 프로그래밍 기술을 향상시키는 보람 있는 경험이 될 수 있습니다.
추가 개선 사항
이 기본 구현을 숙지한 후, 다음을 추가하는 것을 고려해 보세요:
- 이중 링크드 리스트: 각 노드가 다음 및 이전 노드 모두에 대한 참조를 갖도록 합니다.
- 중간/끝 삽입/삭제: 다양한 위치에서 노드를 추가하거나 제거하는 메서드.
- 가져오기 및 정렬 메서드: 특정 요소를 검색하거나 링크드 리스트를 정렬하는 기능.
이러한 개선 사항에 익숙해지면 여러분의 기술 수준이 한 단계 더 향상될 수 있습니다. 즐거운 코딩 되세요!