使用堆栈在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月15日 11:59:22

相关推荐

  • 找出在范围内不可被任何数整除的数字,使用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
  • 找到通过插入给定数字形成的最小数字

    在给定的数字中插入一个数字意味着在给定的数字中添加一个新的数字,可以是在数字的前面、后面或者中间。我们已经给出了一个数字和一个数字,并且必须以尽可能小的方式将该数字添加到数字中。为了方便插入操作,我们将把数字转换为字符串。此外,给定的数字也可以是负数,因此我们必须考虑这种情况。 示例示例 Input…

    2025年12月17日
    000
  • 打印给定数字的乘法表在C中

    程序描述 打印给定数字的乘法表 算法 接受用户提供的任何需要形成乘法的数字 从 I 的值开始乘以给定数 (=1) 将给定数与 I 的值递增,直到 I 值小于或等于12. 示例 /* Program to print the multiplication table of a given number…

    2025年12月17日
    000
  • 给定一个数字,编写一个C程序来找到斐波那契数列

    斐波那契数列是通过将前两个数字相加得到的一系列数字。 斐波那契数列从两个数字f0和f1开始。 fo和f1的初始值可以取0、1或1、1。 Fibonacci序列满足以下条件: fn = fn-1 + fn-2 算法 参考Fibonacci序列的算法。 STARTStep 1: Read integer…

    2025年12月17日
    000
  • 可憎的数字

    如果一个数字在其二进制展开中有奇数个1,则被认为是奇异数。前10个奇异数是1,2,4,7,10,11,13,14,16,19,21。有趣的是,所有2的幂都是奇异数,因为它们只有1个位被设置。 下面的文章详细讨论了两种判断一个数字是否为可恶数字的方法。 问题陈述 这个问题的目的是检查给定的数字是否是一…

    2025年12月17日
    000
  • 用C++将一个数字表示为最大可能数量的质数之和

    讨论一个问题,例如,给定一个数字 N,我们需要将该数字拆分为最大素数和 Input: N = 7Output: 2 2 3Explanation: 7 can be represented as the sum of two 2’s and a 3 which are the maxim…

    2025年12月17日
    000
  • 使用C++编写代码,找到第N个非平方数

    我们都知道不是任何数字的平方的数字,如 2、3、5、7、8 等。非平方数有 N 个,不可能知道每个数字。因此,在本文中,我们将解释有关无平方数或非平方数的所有内容,以及在 C++ 中查找第 N 个非平方数的方法。 第 N 个非平方数 如果一个数是整数的平方,则该数被称为完全平方数。完全平方数的一些例…

    2025年12月17日
    000
  • C++程序:找到具有相同左右旋转的数字的最长子序列

    在这个问题中,我们需要找到左右旋转相同的子序列的最大长度。左旋转是指将字符串中的所有字符向左移动,并将末尾的第一个字符移动。右旋转意味着将所有字符串字符向右移动,并将最后一个字符移动到开头。 问题陈述 – 我们给定了包含数字的字符串str,需要找到左右旋转相同的最大长度的子序列。 示例 输入-str…

    2025年12月17日
    000
  • 将一个以链表表示的数字加1

    数字的链表表示是这样提供的:链表的所有节点都被视为数字的一位数字。节点存储数字,使得链表的第一个元素保存数字的最高有效位,链表的最后一个元素保存数字的最低有效位。例如,数字 202345 在链表中表示为 (2->0->2->3->4->5)。 要向这个表示数字的链表添加…

    2025年12月17日
    000
  • 检查一个数字是否为回文的Bash程序?

    要检查一个数字是否是回文数,我们需要将该数字反转,然后如果原始数字和反转后的数字相同,则为回文数。在Bash中,执行反转操作非常简单。我们需要使用‘rev’命令来实现。让我们看一下程序以更清楚地理解。 示例 #!/bin/bash# GNU bash Scriptn=12321rev=$(echo …

    2025年12月17日
    000
  • 将数组表示的数字加1(递归方法)

    给定一个数组,该数组是由非负数字表示的数字的集合,将数字加1(增加由数字表示的数字)。数字存储方式是最高位数字是数组的第一个元素。 要将数字加1到由数字表示的数字 从数组末尾开始,加法意味着将最后一个数字4舍入为5。 如果最后一个元素是9,则将其变为0并进位=1。 对于下一次迭代,检查进位,如果加到…

    2025年12月17日
    000
  • 打印N行数字,使得每对数字之间的最大公约数为K

    gcd gcd代表两个或多个整数的最大公约数,不包括0 例如,要找到48和180的最大公约数 48 = 2 × 2 × 2 × 2 × 3 180 = 2 × 2 × 3 × 3 × 5 最大公约数 = 2 × 2 × 3 = 12。 在给定的问题中,应打印N行,其中元素具有指定的最大公约数 Inp…

    2025年12月17日
    000
  • 在C语言中,不使用循环、递归和宏展开的情况下,打印一个数字100次

    在本节中,我们将看到如何在C语言中打印一个数字100次。有一些限制条件。我们不能使用循环、递归或宏展开。 为了解决这个问题,我们将使用C语言中的setjump和longjump。setjump()和longjump()位于setjmp.h库中。这两个函数的语法如下所示。 示例 #include #i…

    2025年12月17日
    000
  • C程序以X形式显示数字

    参考下面的算法,编写C程序以显示X形状的数字。 算法 Step 1: StartStep 2: Declare variablesStep 3: Read number of rowsStep 4: for loop satisfiesif(i==j || i+j==rows-1)print i+1…

    2025年12月17日
    000
  • 使用队列来反转一个栈

    介绍 队列和栈都是线性数据结构,用于存储数据。栈使用lifo原则来插入和删除元素。队列使用fifo原则。在本教程中,我们将学习如何使用队列来反转一个栈。反转意味着栈的最后一个元素变为第一个,依此类推。 什么是堆栈? 数据结构中的堆栈受到现实生活中的堆栈的启发。它使用后进先出(LIFO)逻辑,这意味着…

    2025年12月17日
    000
  • C++程序以找到使数字为0所需的最少操作次数

    假设我们有一个包含 n 位数字的数字字符串 S。假设 S 代表一个数字时钟,整个字符串显示从 0 到 10^n – 1 的整数。如果位数较少,则会显示前导 0。按照以下操作 – 将时钟上的数字减 1,或 交换两位数字 p> 我们希望时钟能够以最少的操作次数显示 0。我们…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信