정수 Num이 입력으로 주어졌습니다. 목표는 스택을 사용하여 숫자의 역수를 찾는 것입니다.
Stack:- 스택은 LIFO(Last in First Out) 방식으로 데이터를 저장하는 C++의 데이터 구조입니다. 스택의 주요 작업은 다음과 같습니다.
선언-: stack
top()을 사용하여 Top 찾기. stck.top() 함수는 stck
Removing Top에서 pop()을 사용하여 최상위 요소에 대한 참조를 반환합니다. 함수는 stck
에서 push()를 사용하여 맨 위에 요소를 추가하여 최상위 요소를 제거합니다. 함수 stck.push( value )는 스택에 항목 값을 추가합니다. 값은 stck 유형이어야 합니다.
empty()를 사용하여 staxk가 비어 있는지 확인하세요. 스택이 비어 있으면 stck.empty() 함수는 true를 반환합니다.
Input − Num = 33267
Output − 76233
설명−
먼저 우리는 모든 요소를 스택으로 푸시
7 - 6 - 2 - 3 - 3 ← top
7 * 10000 + 6 * 1000 + 2*100 + 3*10 + 3*1 ←
= 70000 + 6000 + 200 + 30 + 3 ←
= 76233
Input − Num = 111000
Output − 숫자의 역순: 111
Explanation −
먼저 모든 요소를 스택에 푸시합니다
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만큼 줄입니다. 이런 방식으로 스택은 다음으로 채워집니다. 위쪽을 첫 번째 숫자로 합니다.
입력 숫자 Num을 가져옵니다.
stack
Function pushDigts(int num1)는 num1을 가져와 첫 번째 숫자가 맨 위에 오도록 스택에 추가합니다.
rem을 변수로 사용합니다.
while 루프를 사용하여 num1이 0이 아닌지 확인합니다. true이면 rem=num1%10을 설정합니다.
rem을 스택에 푸시합니다.
두 번째 숫자에 대해 num1을 10씩 줄이는 등의 작업을 수행합니다.
이제 revrseNum( ).
변수 revrs, topp, temp, i를 가져옵니다.
스택이 비어 있지 않은 동안
최상위 요소를 topp=stck.top()으로 가져옵니다.
다음을 사용하여 스택을 줄입니다. stck.pop().
temp=topp*i로 설정합니다.
revrs에 temp를 추가합니다.
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
위 내용은 스택을 사용하여 C++에서 숫자 뒤집기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!