首页 > 后端开发 > C++ > 使用堆栈在C++中反转一个数字

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

王林
发布: 2023-09-14 12:45:02
转载
1413 人浏览过

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

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

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

声明-: stack ;持续; //stck 现在是一个堆栈变量。

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

  • 使用pop()删除顶部。函数从 stck 中删除最上面的元素

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

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

示例

输入− Num = 33267

输出− 76233

解释

第一我们会将所有元素压入堆栈

7 - 6 - 2 - 3 - 3 ← top

7 * 10000 + 6 * 1000 + 2*100 + 3*10 + 3*1 ←

= 70000 + 6000 + 200 + 30 + 3 ←

= 76233

输入− Num = 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。这样堆栈将被填充top 作为第一个数字。

  • 获取输入数字 Num。

  • 使用 stack 为整数取空堆栈; stck.

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

  • 将rem作为变量。

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

  • 将 rem 压入堆栈。

  • 将 num1 减少 10 作为第二位数字,依此类推。

  • 现在使用堆栈元素和函数 revrseNum 反转数字( ).

  • 取变量 revrs, topp, temp, i.

  • 当堆栈不为空时

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

  • 使用reduce stack stck.pop().

  • 设置 temp=topp*i.

  • 将 temp 添加到 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
登录后复制

以上是使用堆栈在C++中反转一个数字的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:tutorialspoint.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板