在 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
以上是 在 C++ 中使用堆栈反转数字 的全部内容, 来源链接: utcz.com/z/338642.html