라이브러리
[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` 예외를 발생시키고, 스택이 비어있지 않으면 스택의頂部 데이터를 반환합니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.