입력으로 정수 Num이 제공됩니다. 목표는 스택을 사용하여 숫자의 역수를 찾는 것입니다.
스택 :- 스택은 LIFO(Last in First Out) 방식으로 데이터를 저장하는 C++의 데이터 구조입니다. 스택의 주요 작업은 다음과 같습니다.
선언-:스택
-
top()을 사용하여 Top 찾기 . 함수 stck.top()은 stck에서 최상위 요소의 참조를 반환합니다.
-
pop()을 사용하여 상단 제거 . 함수는 stck에서 최상위 요소를 제거합니다.
-
push()를 사용하여 맨 위에 요소 추가 . 함수 stck.push( value )는 스택에 항목 값을 추가합니다. 값은 stck 유형이어야 합니다.
-
empty()를 사용하여 staxk가 비어 있는지 확인 . 함수 stck.empty()는 스택이 비어 있으면 true를 반환합니다.
예시
입력 - 숫자 =33267
출력 − 숫자의 역순:76233
설명 -
먼저 모든 요소를 스택으로 푸시합니다.
7 - 6 - 2 - 3 - 3 ← 상단
7 * 10000 + 6 * 1000 + 2*100 + 3*10 + 3*1 ←
=70000 + 6000 + 200 + 30 + 3 ←
=76233
입력 - 숫자 =111000
출력 − 숫자의 역순:111
설명 -
먼저 모든 요소를 스택으로 푸시합니다.
0 - 0 - 0 - 1 - 1 - 1 ← 상단
0 * 100000 + 0 * 10000 + 0*1000 + 1*100 + 1*10 + 1*1 ←
=0 + 0 + 0 + 100 + 10 + 1 ←
=111
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
이 접근 방식에서 우리는 먼저 입력 숫자의 나머지를 취하고 스택으로 푸시하고 숫자가 0이 될 때까지 숫자를 10만큼 줄입니다. 이런 방식으로 스택은 맨 위를 첫 번째 숫자로 채울 것입니다.
-
입력된 번호를 가져옵니다.
-
stack
를 사용하여 정수에 대해 빈 스택을 가져옵니다.stck. -
pushDigts(int num1) 함수는 num1을 가져와 첫 번째 숫자가 맨 위에 오도록 스택에 추가합니다.
-
rem을 변수로 사용합니다.
-
while 루프를 사용하여 num1이 0이 아닌지 확인하고, true이면 rem=num1%10을 설정합니다.
-
스택에 rem을 푸시합니다.
-
num1을 2번째 자리 등으로 10으로 줄입니다.
-
이제 revrseNum() 함수를 사용하여 스택의 요소를 사용하여 숫자를 뒤집습니다.
-
변수 revrs, topp, temp, i를 사용합니다.
-
스택이 비어 있지 않은 동안
-
최상위 요소를 topp=stck.top()으로 가져옵니다.
-
stck.pop()을 사용하여 스택을 줄입니다.
-
temp=topp*i로 설정합니다.
-
회전수에 온도를 추가합니다.
-
i를 100의 배수로 i*10만큼 증가시킵니다.
-
끝에 입력 번호의 역순을 revrs로 반환합니다.
-
메인 내부에서 얻은 결과를 인쇄합니다.
예시
#include <bits/stdc++.h> using namespace std; stack <int> stck; void pushDigts(int num1){ int rem; while (num1 > 0){ rem=num1 % 10; stck.push(rem); num1 = num1 / 10; } } int revrseNum(){ int revrs = 0; int i = 1; int temp; int topp; while (!stck.empty()){ topp=stck.top(); stck.pop(); temp=topp*i; revrs = revrs + temp; i *= 10; } return revrs; } int main(){ int Num = 43556; pushDigts(Num); cout<<"Reverse of number is: "<<revrseNum(); return 0; }
출력
위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Reverse of number is: 65534