我们得到一个整数 Num 作为输入。目标是使用堆栈找到数字的倒数。
堆栈:- 堆栈是 C++ 中的一种数据结构,它以 LIFO(后进先出)方式存储数据。栈的主要操作有-:
声明-: stack
使用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
函数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中文网其他相关文章!