Java에서 연결 목록 사용 소개

Java에서 연결 목록 사용 소개

데이터 구조는 효율적인 프로그램 생성에서 절정에 달하는 데이터를 저장, 검색 및 삭제하기 위해 미리 정의된 다양한 방법을 사용합니다. 연결 목록은 연결된(또는 연결된) 노드 목록으로 구성된 널리 사용되는 데이터 구조입니다.





그러나 Java에서 연결 목록을 만드는 방법은 무엇입니까? 한 번 보자.





연결 목록은 어떻게 작동합니까?

모든 연결 목록은 항상 목록의 시작을 가리키는 책임이 있는 '머리'라고 하는 특수 노드로 시작합니다. 연결 목록의 각 노드는 물리적으로 후속 작업을 따를 필요가 없기 때문에 헤드가 중요합니다(즉, 선행 작업과 후속 작업이 물리적으로 인접할 필요가 없음).





모든 데이터 구조와 마찬가지로 연결 목록은 모든 개발자가 사용할 수 있는 미리 정의된 함수 집합을 통해 생성, 검색, 삽입 및 파괴를 용이하게 합니다.

자바에서 연결 리스트 생성하기

연결 목록을 만들고 조작하도록 설계된 Java 프로그램에는 세 가지 고유한 섹션이 있습니다. 노드 클래스, 연결 목록 클래스 및 드라이버. 이 세 섹션을 하나의 파일에 결합할 수 있지만 모든 개발자가 알아야 하는 '관심 분리'라는 컴퓨터 과학의 설계 원칙이 있습니다.



관심사 분리 원칙은 특정 관심사를 다루는 코드의 각 섹션을 분리해야 한다고 명시하고 있습니다. 이 원칙은 더 깔끔한(더 읽기 쉬운) 코드를 만드는 데 도움이 되며 데이터 구조를 만드는 데 이상적입니다.

Java에서 연결 목록을 만드는 첫 번째 단계는 노드 클래스를 만드는 것입니다. 노드 클래스에는 두 가지 속성이 있어야 합니다. 속성 중 하나는 노드의 데이터 부분을 나타내고 다른 속성은 연결된 부분을 나타냅니다. 노드 클래스에는 생성자, getter 및 setter도 있어야 합니다.





관련된: Java에서 클래스를 만드는 방법 알아보기

getter와 setter는 다른 클래스(예: 연결 목록 클래스)가 연결 목록 내의 다양한 노드에 액세스할 수 있도록 합니다.





노드 클래스 예

아래는 우리가 의미하는 바에 대한 아이디어를 얻을 수 있는 노드 클래스 예입니다.


public class Node {
private int Data;
private Node NextNode;
//constructor
public Node() {
Data = 0;
NextNode = null;
}
//getters and setters
public int getData() {
return Data;
}
public void setData(int data) {
Data = data;
}
public Node getNextNode() {
return NextNode;
}
public void setNextNode(Node nextNode) {
NextNode = nextNode;
}
}

이 예에서 데이터 속성은 정수 값을 저장합니다. 이제 노드 클래스가 있으므로 연결 목록으로 이동할 차례입니다.

연결 목록 예제

다음은 Java의 연결 목록의 예입니다.

public class LinkedList {
private Node Head;
//constructor
public LinkedList() {
Head = null;
}
}

위의 코드는 연결된 목록 클래스를 생성하지만 다양한 작업 없이 클래스는 빈 셸과 동일하게 보일 수 있습니다. 연결 목록 데이터 구조에는 채우는 데 사용할 수 있는 몇 가지 작업이 있습니다.

  • 전면에 삽입합니다.
  • 중간에 삽입합니다.
  • 뒷면에 삽입합니다.

관련된: JavaScript ES6 클래스로 데이터 구조를 구축하는 방법

삽입 방법의 연결 목록 컬렉션은 개발자가 스택과 같은 다른 데이터 구조(위에서 삽입 및 삭제만 허용)보다 이 데이터 구조를 사용하도록 선택할 수 있는 한 가지 이유입니다.

전면 삽입 방식 사용

insert at the front 메소드는 이름에서 알 수 있듯이 새 데이터(또는 새 노드)를 연결 목록의 맨 앞에 삽입합니다.

전면 삽입 방법 예

다음은 목록 앞에 새 데이터를 삽입하는 방법의 예입니다.

//insert node at front method
public void insertAtFront(int key) {
//create a new node using the node class
Node Temp = new Node();
//check if the Temp node was successfully created
//assign the data that was provides by the user to it
if(Temp != null) {
Temp.setData(key);
Temp.setNextNode(null);

//check if the head of the linked list is empty
//assign the node that was just created to the head position
if(Head == null) {
Head = Temp;
}
//if a node is already at the head position
//add the new node to it and set it as the head
else {
Temp.setNextNode(Head);
Head = Temp;
}
}
}

NS 전면 삽입 위의 예에서 메서드를 사용하면 사용자가 주어진 연결 목록에 새 노드를 추가할 수 있습니다.

전면에 인서트 적용 예

다음은 전면에 삽입을 적용하는 방법의 예입니다.

public class Driver {
//executes the program
public static void main(String[] args) {
//create a new linked list called List
LinkedList List = new LinkedList();
//add each value to the front of the linked list as a new node
List.insertAtFront(10);
List.insertAtFront(8);
List.insertAtFront(6);
List.insertAtFront(4);
List.insertAtFront(2);
}
}

NS 운전사 class(자바에서 실행 가능한 클래스에 자주 할당되는 이름)는 LinkedList 클래스를 사용하여 5개의 짝수로 구성된 연결 목록을 만듭니다. 위의 코드를 보면 '2'라는 숫자가 연결 리스트의 선두 위치에 있다는 것을 쉽게 알 수 있을 것입니다. 그러나 이것을 어떻게 확인할 수 있습니까?

Windows 10 바탕 화면에 액세스할 수 없습니다

모든 노드 표시 방법 사용

모든 노드 표시 방법은 필수 연결 목록 방법입니다. 이것이 없으면 개발자는 연결 목록에서 노드를 볼 수 없습니다. 목록을 구성하는 각 노드에 저장된 데이터를 인쇄하는 연결 목록(머리에서 시작)을 통해 이동합니다.

모든 노드 표시 방법 예

다음은 Java에서 모든 메모 표시 방법을 사용하는 예입니다.

//display all nodes method
public void displayAllNodes() {
//create a new node call Temp and assign it to the head of the linked list
//if the head has a null value then the linked list is empty
Node Temp = Head;
if (Head == null){
System.out.println('The list is empty.');
return;
}
System.out.println('The List:');

while(Temp != null) {
//print the data in each node to the console(starting from the head)
System.out.print(Temp.getData() + ' ');
Temp = Temp.getNextNode();
}
}

이제 그 displayAllNodes 메소드가 추가되었습니다. 링크드리스트 드라이버 클래스에 한 줄의 코드를 추가하여 연결 목록을 볼 수 있습니다.

모든 노드 표시 방법 예제 사용

아래에서 모든 노드 표시 방법을 사용하는 방법을 볼 수 있습니다.

//print the nodes in a linked list
List.displayAllNodes();

위의 코드 줄을 실행하면 콘솔에 다음 출력이 생성됩니다.

목록:

2 4 6 8 10

노드 찾기 방법 사용

사용자가 연결 목록에서 특정 노드를 찾으려는 경우가 있습니다.

예를 들어, 수백만 명의 고객이 있는 은행이 특정 고객의 세부 정보만 볼 필요가 있을 때 모든 고객의 데이터베이스를 인쇄하는 것은 실용적이지 않습니다.

따라서 사용하는 대신 displayAllNodes 방법보다 효율적인 방법은 필요한 데이터가 포함된 단일 노드를 찾는 것입니다. 이것이 연결 리스트 데이터 구조에서 단일 노드 방법에 대한 검색이 중요한 이유입니다.

노드 찾기 방법 예제

다음은 노드 찾기 방법을 사용하는 예입니다.

//search for a single node using a key
public boolean findNode(int key) {
//create a new node and place it at the head of the linked list
Node Temp = Head;
//while the current node is not empty
//check if its data matches the key provided by the user
while (Temp != null) {
if (Temp.getData() == key) {
System.out.println('The node is in the list');
return true;
}
//move to the next node
Temp = Temp.getNextNode();
}
//if the key was not found in the linked list
System.out.println('The node is not in the list');
return false;
}

이랑 displayAllNodes 방법, 당신은 확인 링크드리스트 2에서 10까지 5개의 짝수를 포함합니다. findNode 위의 예는 단순히 드라이버 클래스에서 메서드를 호출하고 숫자를 매개변수로 제공하여 짝수 중 하나가 숫자 4인지 확인할 수 있습니다.

노드 찾기 방법 사용 예

다음은 노드 찾기 방법을 실제로 사용하는 방법의 예입니다.

//check if a node is in the linked list
List.findNode(4);

위의 코드는 콘솔에 다음 출력을 생성합니다.

The node is in the list

노드 삭제 방법 사용

위의 동일한 은행 예를 사용하여 은행 데이터베이스의 고객은 계좌를 폐쇄하고자 할 수 있습니다. 여기서 노드 삭제 방법이 유용할 것입니다. 가장 복잡한 연결 목록 방법입니다.

노드 삭제 방법은 지정된 노드를 검색하고 해당 노드를 삭제하고 이전 노드를 삭제된 노드 다음에 오는 노드에 연결합니다.

노드 삭제 방법 예

다음은 노드 삭제 방법의 예입니다.

public void findAndDelete(int key) {
Node Temp = Head;
Node prev = null;
//check if the head node holds the data
//and delete it
if (Temp != null && Temp.getData() == key) {
Head = Temp.getNextNode();
return;
}
//search the other nodes in the list
//and delete it
while (Temp != null) {
if (Temp.getNextNode().getData() == key ) {
prev = Temp.getNextNode().getNextNode();
Temp.setNextNode(prev);
return;
}
Temp = Temp.getNextNode();
}
}

노드 삭제 방법 예제 사용

다음은 노드 삭제 방법을 실제로 사용하는 예입니다.

시스템에 열려 있는 파일을 삭제할 수 없습니다.
//delete the node that holds the data 4
List.findAndDelete(4);
//print all nodes in the linked list
List.displayAllNodes();

기존 Driver 클래스에서 위의 두 줄 코드를 사용하면 콘솔에 다음 출력이 생성됩니다.

The List:
2 6 8 10

이제 Java에서 연결 목록을 만들 수 있습니다.

이 튜토리얼 기사를 끝까지 읽었다면 다음을 알게 될 것입니다.

  • 노드 클래스를 만드는 방법.
  • 연결 리스트 클래스를 만드는 방법.
  • 미리 정의된 메서드로 연결 목록 클래스를 채우는 방법.
  • 드라이버 클래스를 만들고 다른 연결 목록 메서드를 사용하여 원하는 결과를 얻는 방법.

연결 목록은 데이터를 저장, 검색 및 삭제하는 데 사용할 수 있는 많은 데이터 구조 중 하나일 뿐입니다. 시작하는 데 필요한 모든 것이 있으므로 Java에서 이러한 예제를 직접 시도해 보지 않겠습니까?

공유하다 공유하다 트위터 이메일 Java에서 배열에 대한 작업을 만들고 수행하는 방법

자바를 배우시나요? 어레이가 데이터를 쉽게 처리하도록 하십시오.

다음 읽기
관련 항목
  • 프로그램 작성
  • 자바
  • 프로그램 작성
  • 코딩 팁
저자 소개 카데이샤 킨(21개 기사 게재)

Kadeisha Kean은 전체 스택 소프트웨어 개발자이자 기술/기술 작가입니다. 그녀는 가장 복잡한 기술 개념 중 일부를 단순화하는 뚜렷한 능력을 가지고 있습니다. 기술 초보자라면 누구나 쉽게 이해할 수 있는 소재를 생산합니다. 그녀는 글쓰기, 흥미로운 소프트웨어 개발, 세계 여행(다큐멘터리)에 열정적입니다.

카데이샤 킨이 참여한 작품 더보기

뉴스레터 구독

뉴스레터에 가입하여 기술 팁, 리뷰, 무료 전자책 및 독점 거래를 확인하십시오!

구독하려면 여기를 클릭하세요.