>  기사  >  백엔드 개발  >  스택을 사용하여 C++에서 숫자 뒤집기

스택을 사용하여 C++에서 숫자 뒤집기

王林
王林앞으로
2023-09-14 12:45:021340검색

스택을 사용하여 C++에서 숫자 뒤집기

정수 Num이 입력으로 주어졌습니다. 목표는 스택을 사용하여 숫자의 역수를 찾는 것입니다.

Stack:- 스택은 LIFO(Last in First Out) 방식으로 데이터를 저장하는 C++의 데이터 구조입니다. 스택의 주요 작업은 다음과 같습니다.

선언-: stack 스택; //stck는 이제 스택 변수입니다.

  • top()을 사용하여 Top 찾기. stck.top() 함수는 stck

  • Removing Top에서 pop()을 사용하여 최상위 요소에 대한 참조를 반환합니다. 함수는 stck

  • 에서 push()를 사용하여 맨 위에 요소를 추가하여 최상위 요소를 제거합니다. 함수 stck.push( value )는 스택에 항목 값을 추가합니다. 값은 stck 유형이어야 합니다.

  • empty()를 사용하여 staxk가 비어 있는지 확인하세요. 스택이 비어 있으면 stck.empty() 함수는 true를 반환합니다.

Examples

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를 사용하여 정수에 대해 빈 스택을 가져옵니다. stck.

  • 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로 역수합니다.

  • 메인 내부에서 얻은 결과를 인쇄합니다.

Example

#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;
}

输ude

如果我们运行上面的代码,它将生成以下输流

Reverse of number is: 65534

위 내용은 스택을 사용하여 C++에서 숫자 뒤집기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제