Java에서 연결 목록 인쇄

Hiten Kanwar 2023년10월12일
Java에서 연결 목록 인쇄

연결 목록은 노드라고 하는 요소를 저장하는 데 사용됩니다. 노드는 데이터와 참조라는 두 개의 엔터티로 구성됩니다. 참조는 다음 노드를 가리킵니다. 메모리의 주소는 연결 목록 요소의 순서를 정의하지 않습니다.

Java 프로그래밍 언어는 LinkedList 클래스를 제공합니다. 이 클래스는 이중 연결 목록 데이터 구조의 기능을 제공하는 Java의 컬렉션 프레임워크에서 사용할 수 있습니다.

이 자습서에서는 Java에서 연결 목록을 인쇄하는 방법을 소개합니다.

LinkedList 클래스를 사용하여 연결 목록 개체를 만들고 add() 함수를 사용하여 일부 요소를 추가하고 표시할 수 있습니다.

아래 코드를 참조하십시오.

import java.util.*;

public class ABC {
  public static void main(String[] args) {
    LinkedList<String> fruits = new LinkedList<>();
    fruits.add("apple");
    fruits.add("orange");
    fruits.add("mango");
    String str = fruits.listIterator(1).previous();
    System.out.println(fruits);
  }
}

출력:

[apple, orange, mango]

toString() 함수를 사용하여 최종 목록을 문자열로 표시할 수도 있습니다. toString() 메서드는 쉼표로 구분된 문자열 형식으로 연결 목록 요소를 반환합니다.

예를 들어,

import java.util.*;

public class ABC {
  public static void main(String[] args) {
    LinkedList<String> fruits = new LinkedList<>();
    fruits.add("apple");
    fruits.add("orange");
    fruits.add("mango");
    String str = fruits.listIterator(1).previous();
    System.out.println(fruits.toString());
  }
}

출력:

[apple, orange, mango]

이 메서드는 연결 목록을 처음부터 끝까지 구문 분석하고 쉼표를 사용하여 구분합니다.

또한 사용자 정의 클래스를 만들어 연결 목록을 시작하고 필요한 기능을 만들 수도 있습니다. 이러한 클래스로 작업하는 동안 목록을 표시하는 메서드를 만들어야 합니다.

이 메서드를 사용하고 사용자 요구 사항에 따라 업데이트하는 동안 toString() 함수를 재정의해야 합니다.

예를 들어,

public class LinkedListNode {
  private int data;
  private LinkedListNode next;
  public LinkedListNode(int data) {
    this.data = data;
    this.next = null;
  }
  public int getData() {
    return data;
  }
  public void setData(int d) {
    data = d;
  }
  public LinkedListNode getNext() {
    return next;
  }
  public void setNext(LinkedListNode n) {
    next = n;
  }
}

public class LinkedList {
  public LinkedListNode head;
  public static void main(String[] args) {
    LinkedList list = new LinkedList();
    list.insertFront(1);
    list.insertFront(2);
    list.insertFront(3);
    System.out.println(list.toString());
  }
  public LinkedList() {
    this.head = null;
  }
  public int removeFront() {
    if (head == null) {
      System.out.println("Empty list");
      return 0;
    } else {
      int temp = head.getData();
      head = head.getNext();
      return temp;
    }
  }
  public void insertFront(int data) {
    if (head == null) {
      head = new LinkedListNode(data);
    } else {
      LinkedListNode newNode = new LinkedListNode(data);
      newNode.setNext(head);
      head = newNode;
    }
  }
  public void insertBack(int data) {
    if (head == null) {
      head = new LinkedListNode(data);
    } else {
      LinkedListNode newNode = new LinkedListNode(data);
      LinkedListNode current = head;
      while (current.getNext() != null) {
        current = current.getNext();
      }
      current.setNext(newNode);
    }
  }

  public int removeBack() {
    if (head == null) {
      System.out.println("Empty list");
      return 0;
    } else if (head.getNext() == null) {
      int temp = head.getData();
      head = null;
      return temp;
    } else {
      LinkedListNode current = head;
      while (current.getNext().getNext() != null) {
        current = current.getNext();
      }
      int temp = current.getNext().getData();
      current.setNext(null);
      return temp;
    }
  }

  public String toString() {
    String result = "";
    LinkedListNode current = head;
    while (current.getNext() != null) {
      result += current.getData();
      if (current.getNext() != null) {
        result += ", ";
      }
      current = current.getNext();
    }
    result += current.getData();
    return "Contents of the List: " + result;
  }

  public LinkedListNode getHead() {
    return head;
  }
}

출력:

Contents of the List: 3, 2, 1

필요한 목록을 문자열로 형식화하지 않고 직접 인쇄할 수도 있습니다. 또한 초기 노드에서 시작하여 표시하고 다음 노드로 이동합니다.

다음 코드를 참조하십시오.

public class LinkedListNode {
  private int data;
  private LinkedListNode next;
  public LinkedListNode(int data) {
    this.data = data;
    this.next = null;
  }
  public int getData() {
    return data;
  }
  public void setData(int d) {
    data = d;
  }
  public LinkedListNode getNext() {
    return next;
  }
  public void setNext(LinkedListNode n) {
    next = n;
  }
}

public class LinkedList {
  public LinkedListNode head;
  public static void main(String[] args) {
    LinkedList list = new LinkedList();
    list.insertFront(1);
    list.insertFront(2);
    list.insertFront(3);
    list.display();
  }
  public LinkedList() {
    this.head = null;
  }
  public int removeFront() {
    if (head == null) {
      System.out.println("Empty list");
      return 0;
    } else {
      int temp = head.getData();
      head = head.getNext();
      return temp;
    }
  }
  public void insertFront(int data) {
    if (head == null) {
      head = new LinkedListNode(data);
    } else {
      LinkedListNode newNode = new LinkedListNode(data);
      newNode.setNext(head);
      head = newNode;
    }
  }
  public void insertBack(int data) {
    if (head == null) {
      head = new LinkedListNode(data);
    } else {
      LinkedListNode newNode = new LinkedListNode(data);
      LinkedListNode current = head;
      while (current.getNext() != null) {
        current = current.getNext();
      }
      current.setNext(newNode);
    }
  }

  public int removeBack() {
    if (head == null) {
      System.out.println("Empty list");
      return 0;
    } else if (head.getNext() == null) {
      int temp = head.getData();
      head = null;
      return temp;
    } else {
      LinkedListNode current = head;
      while (current.getNext().getNext() != null) {
        current = current.getNext();
      }
      int temp = current.getNext().getData();
      current.setNext(null);
      return temp;
    }
  }

  public void display() {
    LinkedListNode current = head;
    while (current.getNext() != null) {
      System.out.println(current.getData());
      current = current.getNext();
    }
    System.out.println(current.getData());
  }

  public LinkedListNode getHead() {
    return head;
  }
}

출력:

3
2
1

관련 문장 - Java Linked List