在 C++ 中使用堆栈反转数字

我们得到一个整数 Num 作为输入。目标是使用堆栈找到数字的反转。

堆栈:- 堆栈是 C++ 中的一种数据结构,它以 LIFO(后进先出)方式存储数据。堆栈的主要操作是-:

声明-: stack <int> stck; //stck 现在是一个堆栈变量。

  • 使用top(). 函数返回stck中顶部元素的引用stck.top()

  • 使用pop(). 函数从stck中删除最顶层的元素

  • 使用 将元素添加到顶部push()。函数在堆栈中添加项目值。值应该是stck 类型。stck.push( value )

  • 使用 .staxk 检查 staxk 是否为空empty()。如果堆栈为空,函数返回真。stck.empty()

例子

输入 - 数字 = 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

下面程序中使用的方法如下

在这种方法中,我们将首先取输入数字的余数并压入堆栈并将数字减少 10 直到数字变为 0。这样堆栈将填充顶部作为第一个数字。

  • 取输入数字 Num。

  • 使用 stack<int> stck 为整数取空栈。

  • 函数 pushDigts(int num1) 取 num1 并将其添加到堆栈中,第一个数字在顶部。

  • 以 rem 为变量。

  • 使用 while 循环检查 num1 是否为非零,如果为真则设置 rem=num1%10。

  • 将 rem 推入堆栈。

  • 将 num1 减少 10 以获得第二个数字,依此类推。

  • 现在使用具有函数的堆栈元素反转数字revrseNum()。

  • 取变量 revrs、topp、temp、i。

  • 虽然堆栈不为空

  • 取最上面的元素作为 topp= 。stck.top()

  • 使用.stck.pop()

  • 设置 temp=topp*i。

  • 将温度添加到 revrs。

  • 以 100 的倍数将 i 增加 i*10。

  • 最后返回输入 num 的反向作为 revrs。

  • 打印在 main 中获得的结果。

示例

#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