
We are given an integer number Num as input. The goal is to find the reverse of the number using stack.
Stack:- A stack is a data structure in C++ which stores data in LIFO ( Last in First Out) manner. Major operations of stack are-:
Declaration-: stack stck; //stck is now a stack variable.
Finding Top using top(). Function stck.top() returns reference of top element in the stck
立即学习“C++免费学习笔记(深入)”;
Removing Top using pop(). Function removes topmost element from the stck
Adding element to top using push(). Function stck.push( value ) adds item value in stack. Value should be of type stck.
Check if staxk is empty using empty(). Function stck.empty() returns true if stack is empty.
Examples
Input − Num = 33267
Output − Reverse of number is: 76233
Explanation−
First we will push all elements to stack
7 – 6 – 2 – 3 – 3 ← top
7 * 10000 + 6 * 1000 + 2*100 + 3*10 + 3*1 ←
= 70000 + 6000 + 200 + 30 + 3 ←
= 76233
Input − Num = 111000
Output − Reverse of number is: 111
Explanation −
First we will push all elements to stack
0 – 0 – 0 – 1 – 1 – 1 ← top
0 * 100000 + 0 * 10000 + 0*1000 + 1*100 + 1*10 + 1*1 ←
= 0 + 0 + 0 + 100 + 10 + 1 ←
= 111
Approach used in the below program is as follows
In this approach we will first take remainders of input number and push to stack and reduce number by 10 until number becomes 0. In this way stack will be filled with top as first digit.
Take the input number Num.
Take empty stack for integers using stack stck.
Function pushDigts(int num1) takes num1 and adds it to stack with first digit on top.
Take rem as variable.
Using a while loop check if num1 is non-zero, if true then set rem=num1%10.
Push rem to stack.
Reduce num1 by 10 for 2nd digit and so on.
Now reverse the number using elements of stack with function revrseNum().
Take variables revrs, topp, temp, i.
While the stack is not empty
Take the topmost element as topp=stck.top().
Reduce stack using stck.pop().
Set temp=topp*i.
Add temp to revrs.
Increase i by i*10 in multiples of 100.
At the end return the reverse of the input num as revrs.
Print result obtained inside main.
Example
#include using namespace std;stack 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++中反转一个数字的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1445145.html
微信扫一扫
支付宝扫一扫