다음 작업을 지원하는 전화 디렉토리를 설계한다고 가정합니다.
-
get - 이것은 누구에게도 할당되지 않은 번호를 제공합니다.
-
check - 번호를 사용할 수 있는지 여부를 확인합니다.
-
release - 번호를 재활용하거나 해제합니다.
이니셜라이저를 사용하여 처음에 n개의 숫자를 초기화할 수 있습니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
한 세트 정의
-
사용 가능한 하나의 대기열 정의
-
이니셜라이저는 maxNumbers를 사용합니다.
-
N :=maxNumbers
-
initialize i :=0의 경우, i
-
사용 가능한 항목에 i 삽입
-
-
get()
함수 정의 -
사용 가능한 크기가 0과 같으면 -
-
반환 -1
-
-
x :=사용 가능한 첫 번째 요소
-
s에 x 삽입
-
사용 가능한 요소에서 삭제
-
x를 반환
-
check() 함수를 정의하면 숫자가 필요합니다.
-
숫자>=N 또는 숫자 <0이면 -
-
거짓 반환
-
-
반환 true 숫자가 s에 없습니다.
-
release() 함수를 정의하면 숫자가 필요합니다.
-
체크(숫자)인 경우 -
-
반환
-
-
x :=숫자
-
s에서 x 삭제
-
사용 가능한 위치에 x 삽입
예시
더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −
#include네임스페이스 std;class PhoneDirectory {public:set =N || number <0) return false; return s.find(숫자) ==s.end(); } 무효 릴리스(int number){ if (check(number)) return; 정수 x =숫자; s.삭제(x); 사용 가능.푸시(x); }};main(){ PhoneDirectory ob(3); cout <<(ob.get()) < 입력
ob.get();ob.get();ob.check(2);ob.get();ob.check(2);ob.release(2);ob.check(2);사전>출력
011201