LinkedList는 일련의 노드로 구성된 데이터 구조이며 각 노드에는 요소와 시퀀스의 다음 노드에 대한 참조(또는 포인터)가 포함됩니다. 시퀀스의 첫 번째 노드를 헤드라고 하고 마지막 노드를 테일이라고 합니다. 다음 노드에 대한 노드의 참조가 null이면 꼬리 노드입니다.
배열 및 기타 선형 데이터 구조와 달리 LinkedList의 요소는 인접한 메모리 위치에 저장되지 않습니다. 대신 각 노드는 메모리에 별도로 할당되며 노드 간의 참조는 서로 연결하는 데 사용됩니다.
LinkedList의 일상 생활 예는 기차가 될 수 있습니다. 기차의 각 객차는 연결된 목록의 노드와 같으며 승객이나 화물을 요소로 포함합니다. 캐리지는 LinkedList의 다음 노드에 대한 참조 또는 포인터와 같은 커플러에 의해 서로 연결됩니다.
기차가 조립되면 객차가 특정 순서로 기차에 추가됩니다. 각 객차는 커플러를 사용하여 다음 객차와 연결되어 열차가 선로를 따라 원활하게 이동할 수 있습니다. 마찬가지로 연결된 목록에서 노드는 특정 순서로 추가되고 참조를 사용하여 서로 연결되어 목록을 특정 순서로 순회할 수 있습니다.
기차가 목적지에 도착하면 마차는 추가된 순서대로 기차에서 제거됩니다. 마찬가지로 연결된 목록에서 요소가 제거되면 추가된 순서대로 제거됩니다.
전반적으로 기차는 노드(객차)가 참조(커플러)를 사용하여 서로 연결되어 시퀀스를 형성하는 방법과 요소(승객 또는 화물)의 순서를 보여주기 때문에 LinkedList의 좋은 일상 생활 예입니다. 목록 순회 내내 유지됩니다.
다음은 기차를 나타내는 Java 코드의 LinkedList 예입니다.
public class TrainLinkedList {
private TrainCarriageNode head;
public TrainLinkedList() {
head = null;
}
public void addCarriage(int numPassengers, String cargo) {
TrainCarriageNode newCarriage = new TrainCarriageNode(numPassengers, cargo);
if (head == null) {
head = newCarriage;
} else {
TrainCarriageNode current = head;
while (current.getNext() != null) {
current = current.getNext();
}
current.setNext(newCarriage);
}
}
public void printTrain() {
TrainCarriageNode current = head;
while (current != null) {
System.out.println("Carriage: passengers=" + current.getNumPassengers() + ", cargo=" + current.getCargo());
current = current.getNext();
}
}
}
class TrainCarriageNode {
private int numPassengers;
private String cargo;
private TrainCarriageNode next;
public TrainCarriageNode(int numPassengers, String cargo) {
this.numPassengers = numPassengers;
this.cargo = cargo;
next = null;
}
public int getNumPassengers() {
return numPassengers;
}
public String getCargo() {
return cargo;
}
public TrainCarriageNode getNext() {
return next;
}
public void setNext(TrainCarriageNode next) {
this.next = next;
}
}
이 예에서 'TrainLinkedList' 클래스는 열차 객차의 연결된 목록을 나타내며 각 객차는 'TrainCarriageNode' 개체로 표시됩니다. 'addCarriage' 메서드는 목록 끝에 새 캐리지를 추가하고, 'printTrain' 메서드는 목록의 각 캐리지 세부 정보를 출력합니다.
'TrainCarriageNode' 클래스는 승객 수 및 운반하는 화물 유형에 대한 필드가 있는 기차의 단일 객차를 나타냅니다. '다음' 필드는 열차의 다음 객차에 대한 참조입니다.
새 객차가 'addCarriage' 메서드를 사용하여 열차에 추가되면 끝에 도달할 때까지 목록을 반복한 다음 마지막 객차의 'next' 참조를 새 마차.
전반적으로 이 예제는 링크된 목록을 사용하여 기차를 나타내는 방법, 각 캐리지가 참조를 사용하여 다음 캐리지에 연결되는 방법 및 목록을 순회하는 동안 캐리지 순서가 유지되는 방법을 보여줍니다.