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

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

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 22:14:05
下一篇 2025年12月17日 22:14:21

相关推荐

  • 利用CSS实现纯英文数字自动换行

    下面为大家带来一篇css代码使纯英文数字自动换行的简单实现。内容挺不错的,现在就分享给大家,也给大家做个参考。 当一个定义了宽度的块状元素中填充的全部为纯英文或者纯数字的时候,在IE和FF中都会撑大容器,不会自动换行 并且当数字或者英文中带有汉字时,会从汉字处换行,而纯汉字却可以自动换行。这个问题如…

    好文分享 2025年12月24日
    000
  • html5怎么设置input只能输入数字

    在html5中,可以通过input标签的type属性来实现只能输入数字的功能,只需要将type属性的值设置为“number”即可,语法“”。 本教程操作环境:windows7系统、HTML5版、Dell G3电脑。 标签规定用户可输入数据的输入字段。 根据不同的 type 属性,输入字段有多种形态。…

    2025年12月21日
    000
  • HTML怎么实现数字焦点图轮播代码

    html怎么实现数字焦点图轮播代码?数字焦点图轮播怎么做?数字焦点图轮播需要注意什么?给大家一份实现数字焦点图轮播代码,需要的朋友可以借鉴一下。 数字焦点图轮播代码 @@##@@ @@##@@ @@##@@ 1 2 3 数字焦点图轮播代码就是这么多了,更多精彩请关注创想鸟其它相关文章! 相关阅读: …

    好文分享 2025年12月21日
    000
  • js 怎么用reverse反转数组元素的顺序

    reverse() 方法会直接修改原数组,它通过交换对称位置的元素来反转数组顺序,返回被修改后的原数组,可用于数值、字符串等各类数组,实际应用包括时间序列倒序、聊天消息排序及算法题处理。 反转数组元素的顺序, reverse() 方法就能搞定。它直接修改原数组,不需要创建新的数组。 直接调用 rev…

    2025年12月20日
    000
  • javascript怎么反转数组顺序

    最直接高效的方法是使用reverse()方法,1. 若允许修改原数组,直接调用arr.reverse()即可;2. 若需保留原数组,则先用slice()或扩展运算符复制再调用reverse();3. 手动实现可通过双指针交换元素,适用于需精细控制的场景;4. 从效率与可读性权衡,绝大多数情况下应优先…

    2025年12月20日 好文分享
    000
  • C++中堆和栈的区别_C++内存分区与变量存储位置解析

    栈由系统管理,存储局部变量,空间小、速度快,函数结束自动释放;2. 堆由程序员控制,用new/malloc分配,需手动释放,空间大但易泄漏;3. 全局/静态变量存全局区,字符串常量存常量区,代码存代码区;4. 变量位置取决于定义方式:局部变量在栈,动态创建在堆,全局和static在全局区,成员随对象…

    2025年12月19日
    000
  • c++中堆和栈的区别是什么_c++内存管理区域详解

    堆和栈在内存分配、生命周期、性能和使用场景上存在显著差异。1. 栈由系统自动管理,用于存储局部变量和函数调用信息,进入作用域时分配,离开时自动释放;堆需手动通过new/delete或malloc/free管理,生命周期由程序员控制,适用于动态大内存分配。2. 栈空间较小,通常几MB,易因递归过深导致…

    2025年12月19日
    000
  • c++中堆和栈的区别是什么_介绍C++中堆与栈内存的区别及使用场景

    堆和栈在内存管理方式上不同:栈由系统自动分配释放,速度快;堆由程序员手动申请释放,易导致内存泄漏。2. 生命周期方面:栈变量随作用域结束自动销毁,堆对象生命周期由程序员控制。3. 空间与灵活性:栈空间小且固定,适合小型局部变量;堆空间大,适合大型或动态数据结构。4. 访问速度:栈内存连续,访问快,缓…

    2025年12月19日
    000
  • C++栈上对象和堆上对象性能差异

    栈对象分配快、访问高效且生命周期明确,适合小对象和短生命周期场景;堆对象灵活但分配慢、有碎片风险,需谨慎使用以避免性能损耗。 在C++中,对象可以创建在栈上,也可以创建在堆上。它们在性能上的差异主要体现在内存分配速度、访问效率、生命周期管理以及缓存局部性等方面。 内存分配与释放开销 栈上对象的内存分…

    2025年12月18日
    000
  • C++ 函数内存管理:使用堆栈实现高效的数据结构

    C++ 函数内存管理:使用堆栈实现高效的数据结构 在 C++ 中,内存管理对于优化代码性能至关重要。函数可以利用堆栈和堆两种内存区域来存储数据,每种区域都有其独特的优点和缺点。 栈 分配在程序的函数调用栈上分配和取消分配速度快存储的数据量有限 堆 立即学习“C++免费学习笔记(深入)”; 分配在程序…

    2025年12月18日
    000
  • C/C++中的数字连线游戏?

    游戏 – 假设有一个 n × n 的方格数组。其中,一些方格是空的,一些是实心的,还有一些非实心的方格由整数 1、2、3、… 设置。每个整数在棋盘上保持或占据恰好两个不同的方格。玩家的任务是借助仅实现水平和垂直移动的简单路径来连接棋盘上每个整数的两次出现。不允许两条不同的路径…

    2025年12月17日
    000
  • 一个数字连线游戏?

    数字连接是一种逻辑谜题,涉及在网格中找到连接数字的路径。 Numberlink谜题的一个简单例子 Numberlink谜题的解答 规则 – 玩家必须用单一连续线(或路径)将网格上的所有匹配数字配对。线条不能分叉或交叉,并且数字必须位于每条线的末端(即不在中间)。只有当问题具有唯一解并且网…

    2025年12月17日
    000
  • 使用O(1)额外空间反转单词

    一个字符串可能由多个%ignore_a_1%组成。C++字符串中的每个单词可以包含字母、数字或特殊符号。字符串被认为是这些字符的存储元素。每个单词由一个空格字符分隔。每个单词也形成一个字符的字符串。在C++中,任何字符串的反向是遵循以下几点的字符串− 它是通过从末尾向开头取字符形成的。 原始字符串的…

    2025年12月17日
    000
  • 使用队列反转二叉搜索树中的路径的C++代码

    例如,给定一个二叉搜索树,我们需要从特定键反转其路径。 寻找解决方案的方法 在这种方法中,我们将创建一个队列并推送所有节点,直到获得根节点。 p> 示例 #include using namespace std;struct node { int key; struct node *left,…

    2025年12月17日
    000
  • C++程序用于计算使数字n变为1所需的最小操作次数

    假设我们有一个数字n。我们任意执行这些操作之一 – 当 n 可被 2 整除时,将 n 替换为 n/2 当 n 可被 3 整除时,将 n 替换为 2n/3 当 n 可被 5 整除时,将 n 替换为 4n/5 立即学习“C++免费学习笔记(深入)”; li> 我们必须计算出数字 1 所…

    2025年12月17日
    100
  • 找出在范围内不可被任何数整除的数字,使用C++

    在本文中,我们将讨论查找 1 到 n(给定)之间的数字的问题,这些数字不能被 2 到 10 之间的任何数字整除。让我们通过一些例子来理解这一点 – Input : num = 14Output : 3Explanation: There are three numbers, 1, 11,…

    2025年12月17日
    000
  • C++程序将一个数字四舍五入到n位小数

    在任何语言中编写程序时,将数字表示为输出是一项有趣且重要的任务。对于整数类型(short、long或medium类型的数据),很容易将数字表示为输出。对于浮点数(float或double类型),有时我们需要将其四舍五入到特定的小数位数。例如,如果我们想将52.24568表示为三位小数,需要进行一些预…

    2025年12月17日
    000
  • 给定一个字符串,其中字母的表示方式被打乱的数字

    在今天的文章中,我们将深入探讨与C++中字符串操作相关的一个独特问题。这个问题是“在给定字符串中,字母表达式被打乱的数字。” 这个问题可以作为一个很好的练习,来提高你在C++中的字符串操作和数据结构技能。 问题陈述 给定一个字符串,任务是识别其中字母表达方式被打乱的数字。例如,如果输入字符串是&#8…

    2025年12月17日
    000
  • 递归程序在C++中检查一个数字是否是回文数

    我们得到一个整数作为输入。目标是使用递归来确定输入数字 Num 是否为回文。 要检查一个数字是否为回文,请反转该数字并检查两个数字是否相同。如果反转后的数等于原数,则为回文。 示例 输入− Num = 34212; 输出− 34212 不是回文! 解释− 如果我们反转 34212,则得到 21243…

    2025年12月17日
    000
  • C程序用于判断给定的数字是否为强数

    一个强数是一个数字,其中各位数字的阶乘之和等于该数字本身。 示例 123!= 1!+2!+3!                    =1+2+6 =9 在这个例子中,123不是一个强数,因为各位数字的阶乘之和不等于该数字本身。 145!=1!+4!+5!             =1+24+120…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信