PHP에서 연결 목록 구현

Subodh Poudel 2023년1월30일
  1. SplDoulyLinkedList 클래스를 사용하여 PHP에서 연결 목록 구현
  2. push() 메서드를 사용하여 연결 목록에 값 삽입
  3. add() 메서드를 사용하여 연결 목록에 값 삽입
  4. pop() 메서드를 사용하여 연결 목록에서 요소 삭제
  5. 연결 목록에서 상위 및 하위 값 찾기
PHP에서 연결 목록 구현

이 기사에서는 PHP에서 연결 목록을 구현하는 방법을 소개합니다.

SplDoulyLinkedList 클래스를 사용하여 PHP에서 연결 목록 구현

연결 목록은 많은 프로그래밍 언어에서 구현되는 일반적인 데이터 구조입니다. 선형이며 서로 연결된 노드를 포함합니다.

각 노드는 데이터와 인접 노드에 대한 링크를 포함합니다. 따라서 연결 목록은 노드 체인을 형성합니다. 연결된 목록에는 다양한 변형이 있습니다.

  1. 단일 연결 목록: 단방향입니다. 정방향으로만 횡단합니다.
  2. 이중 연결 목록: 양방향입니다. 정방향과 역방향 모두를 가로지릅니다.
  3. 순환 연결 리스트: 단방향 및 순환입니다.
  4. 원형 이중 연결 목록: 양방향 및 원형입니다.

연결 목록에서 다양한 작업을 수행할 수 있습니다. 기본 작업은 다음과 같습니다.

  • 순회
  • 삽입
  • 삭제
  • 업데이트
  • 검색

PHP는 연결 목록을 구현하기 위한 SplDoulyLinkedList 클래스를 제공합니다. 이중 연결 목록입니다.

push() 메서드를 사용하여 연결 목록에 값 삽입

push() 메소드는 푸시할 매개변수를 허용하고 목록에 값을 추가할 수 있습니다. 요소는 연결 목록의 끝으로 푸시됩니다.

예를 들어 SplDoubleLinkedList 클래스의 인스턴스를 만들고 $list 변수에 할당합니다. push() 메소드를 호출하고 요소를 삽입하십시오.

예제 코드:

$list = new SplDoublyLinkedList;

$list->push(10);
$list->push(20);
$list->push(30);
$list->push(40);
$list->push(40);

아래 예에서 10, 20, 30, 4040 요소를 빈 연결 목록에 추가했습니다. 40 요소가 두 번 추가됩니다.

다음 함수를 사용하여 목록의 요소를 표시할 수 있습니다.

function displayList($list){
  for ($list->rewind(); $list->valid(); $list->next()) {
    echo $list->current()."<br>";
  }
}

rewind() 메서드는 연결 목록의 시작 부분부터 반복자를 되감습니다. 예를 들어, 반복자는 목록의 첫 번째 요소로 이동합니다.

valid() 메서드는 연결 목록에 더 많은 노드가 포함되어 있는지 확인하고 next() 메서드는 연결 목록의 다음 항목으로 이동합니다. 따라서 위의 for 루프의 예에서와 같이 이러한 방법을 사용하여 연결 목록의 요소를 반복할 수 있습니다.

루프 내에서 current() 메서드는 현재 요소를 나타냅니다. 따라서 현재 요소가 인쇄됩니다.

목록 요소를 인쇄해야 할 때마다 이 함수를 displayList()라고 부를 수 있습니다. 이 기사에서 이 기능을 여러 번 사용할 것입니다.

다음은 $list를 인수로 사용하여 displayList() 함수를 호출할 때의 출력입니다.

출력:

10
20
30
40
40

add() 메서드를 사용하여 연결 목록에 값 삽입

add() 메서드를 사용하여 위치를 지정하여 연결 목록에 요소를 삽입할 수 있습니다. 이 메서드는 두 개의 매개변수를 사용합니다.

첫 번째 매개변수는 항목을 삽입할 인덱스이고 두 번째 매개변수는 삽입할 항목입니다. 예를 들어 450을 매개변수로 사용하여 add() 메서드를 호출하고 displayList() 메서드를 호출합니다.

예제 코드:

$list->add(4,50);
displayList($list);

위의 코드는 우리가 만든 연결 리스트의 네 번째 인덱스에 50 요소를 추가합니다.

출력:

10
20
30
40
50
40

결과적으로 50 요소가 네 번째 색인에 표시됩니다. 이전에 네 번째 색인에 있던 40 요소는 연결 목록의 끝으로 이동합니다.

pop() 메서드를 사용하여 연결 목록에서 요소 삭제

pop() 메서드를 사용하여 연결 목록에서 마지막 요소를 제거할 수 있습니다. 이 메서드는 매개변수를 사용하지 않습니다.

위의 마지막 출력에서 ​​목록에는 다음 요소가 포함됩니다.

10
20
30
40
50
40

pop() 메소드는 연결 목록에서 마지막 요소(40)를 제거합니다.

예제 코드:

$list->pop();
displayList($list);

출력:

10
20
30
40
50

연결 목록에서 상위 및 하위 값 찾기

top() 메서드를 사용하여 연결 목록의 상단 값을 찾고 하단 값에 대해 bottom() 메서드를 사용할 수 있습니다. 아래의 예는 위의 예의 연속이기도 합니다.

목록에는 다음 항목이 포함되어 있습니다.

10
20
30
40
50

$list 객체로 top()bottom() 함수를 호출하고 echo 함수를 사용하여 인쇄할 수 있습니다.

예제 코드:

displayList($list);
echo "the top value: ".$list->top()."<br>";
echo "the bottom value: ".$list->bottom()."<br>";

결과적으로 최상위 항목은 50으로 표시되고 맨 아래 항목은 10으로 표시됩니다.

출력:

10
20
30
40
50
the top value: 50
the bottom value: 10
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn