Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

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

<시간/>

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

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

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

  • 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