라이브러리

[PHP] DsStack::peek - 스택 맨 위의 값을 반환합니다.




DsStack::peek

PHP 7.2 버전부터 제공되는 `DsStack` 클래스는 스택 자료구조를 구현한 클래스입니다. 스택은 LIFO (Last-In-First-Out) 자료구조로, 가장 최근에 추가된 데이터가 가장 먼저 제거됩니다.

`DsStack::peek` 메소드는 스택의顶部에있는 데이터를 반환합니다. 이 메소드는 스택이 비어있지 않으면 데이터를 반환하고, 스택이 비어있으면 `UnderflowException` 예외를 발생시킵니다.

예제


#hostingforum.kr
php

use SplStack;



// 스택 객체 생성

$stack = new SplStack();



// 데이터 추가

$stack->push(1);

$stack->push(2);

$stack->push(3);



// 스택의顶部 데이터 반환

echo $stack->peek() . "
"; // 출력: 3



// 스택의頂部 데이터 제거

$stack->pop();



// 스택의頂部 데이터 반환

echo $stack->peek() . "
"; // 출력: 2



예외 처리


스택이 비어있을 때 `peek` 메소드를 호출하면 `UnderflowException` 예외가 발생합니다.

#hostingforum.kr
php

use SplStack;



// 스택 객체 생성

$stack = new SplStack();



// 스택의頂部 데이터 반환 (스택이 비어있음)

try {

    echo $stack->peek() . "
";

} catch (UnderflowException $e) {

    echo "스택이 비어있습니다.
";

}



사용자 정의 스택 클래스


`DsStack` 클래스를 사용하지 않고, 사용자 정의 스택 클래스를 구현할 수 있습니다.

#hostingforum.kr
php

class MyStack {

    private $data = [];



    public function push($value) {

        array_push($this->data, $value);

    }



    public function peek() {

        if (empty($this->data)) {

            throw new UnderflowException("스택이 비어있습니다.");

        }

        return $this->data[count($this->data) - 1];

    }



    public function pop() {

        if (empty($this->data)) {

            throw new UnderflowException("스택이 비어있습니다.");

        }

        return array_pop($this->data);

    }

}



// 스택 객체 생성

$stack = new MyStack();



// 데이터 추가

$stack->push(1);

$stack->push(2);

$stack->push(3);



// 스택의頂部 데이터 반환

echo $stack->peek() . "
"; // 출력: 3



// 스택의頂部 데이터 제거

$stack->pop();



// 스택의頂部 데이터 반환

echo $stack->peek() . "
"; // 출력: 2



이 예제에서 `MyStack` 클래스는 `DsStack` 클래스와 유사한 스택 자료구조를 구현했습니다. `peek` 메소드는 스택이 비어있으면 `UnderflowException` 예외를 발생시키고, 스택이 비어있지 않으면 스택의頂部 데이터를 반환합니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 595 페이지

검색

게시물 검색