目录
解释
示例
首页 后端开发 C++ 将一个以链表表示的数字加1

将一个以链表表示的数字加1

Aug 29, 2023 pm 09:17 PM
数字 链表

将一个以链表表示的数字加1

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

要向这个表示数字的链表添加 1,我们必须检查列表中最低有效位的值。如果小于 9 就可以了,否则代码将更改下一个数字,依此类推。

现在让我们看一个示例来了解如何做到这一点,1999 表示为 (1-> 9- > 9 -> 9) 并添加 1 应该将其更改为 (2->0->0->0)

Input:1999
Output:2000
登录后复制

解释

将给定的链表表示的数字加1,意味着需要按照以下步骤进行操作:

  • 反转链表:需要将链表反转,即将最后一个数字变为第一个,第一个变为最后一个。例如,1-> 9-> 9 -> 9 转换为 9-> 9 -> 9 ->1。
  • 对于这个反转后的链表,遍历链表,在最左边的节点上加1。如果该节点的值等于9,则将进位传递到下一个节点。重复这个过程,直到没有进位。
  • 将字符串恢复为原始形式,然后返回头节点以打印字符串。

示例

#include <iostream>
using namespace std;
//n=next node ; d=data ; p= previous node; h=head node; c=current node
class Node {
   public:
      int d;
      Node* n;
};
Node *newNode(int d) {
   Node *new_node = new Node;
   new_node->d = d;
   new_node->n = NULL;
   return new_node;
}
Node *reverse(Node *h) {
   Node * p = NULL;
   Node * c = h;
   Node * n;
   while (c != NULL) {
      n = c->n;
      c->n = p;
      p = c;
      c = n;
   }
   return p;
}
Node *addOneUtil(Node *h) {
   Node* res = h;
   Node *temp, *p = NULL;
   int carry = 1, sum;
   while (h != NULL) {
      sum = carry + h->d;
      carry = (sum >= 10)? 1 : 0;
      sum = sum % 10;
      h->d = sum;
      temp = h;
      h = h->n;
   }
   if (carry > 0)
      temp->n = newNode(carry);
   return res;
}
Node* addOne(Node *h) {
   h = reverse(h);
   h = addOneUtil(h);
   return reverse(h);
}
int main() {
   Node *h = newNode(1);
   h->n = newNode(9);
   h->n->n = newNode(9);
   h->n->n->n = newNode(9);
   h = addOne(h);
   while (h != NULL) {
      cout << h->d;
      h = h->n;
   }
   cout<<endl;
   return 0;
}
登录后复制

以上是将一个以链表表示的数字加1的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

iOS 17:如何在待机模式下更改iPhone时钟样式 iOS 17:如何在待机模式下更改iPhone时钟样式 Sep 10, 2023 pm 09:21 PM

待机是一种锁定屏幕模式,当iPhone插入充电器并以水平(或横向)方向定位时激活。它由三个不同的屏幕组成,其中一个是全屏时间显示。继续阅读以了解如何更改时钟的样式。StandBy的第三个屏幕显示各种主题的时间和日期,您可以垂直滑动。某些主题还会显示其他信息,例如温度或下一个闹钟。如果您按住任何时钟,则可以在不同的主题之间切换,包括数字、模拟、世界、太阳能和浮动。Float以可自定义的颜色以大气泡数字显示时间,Solar具有更多标准字体,具有不同颜色的太阳耀斑设计,而World则通过突出显示世界地

地下城与勇士起源狂战士怎么加点 地下城与勇士起源狂战士怎么加点 Mar 17, 2024 am 08:13 AM

地下城与勇士起源狂战士怎么加点,狂战士属于游戏中的一个混伤职业,在游戏中你会面临力量和物理属性的抉择,优先加哪个是收益更高的呢,有关于武器的设置有什么需要注意的,下面就为大家带来地下城与勇士起源狂战士属性加点优先级一览。地下城与勇士起源狂战士属性加点优先级一览1、狂战士属性加点优先级:物理攻击力;力量;光属性强化;全属性强化;物理暴击率;物理暴击伤害;攻击/技能释放速度;移动速度;体力;精神。2、狂战士是综合固定伤害和百分比伤害的职业,其中主要依靠物理攻击、力量和独立攻击力。3、物理攻击会影响固

C++程序将一个数字四舍五入到n位小数 C++程序将一个数字四舍五入到n位小数 Sep 12, 2023 pm 05:13 PM

在任何语言中编写程序时,将数字表示为输出是一项有趣且重要的任务。对于整数类型(short、long或medium类型的数据),很容易将数字表示为输出。对于浮点数(float或double类型),有时我们需要将其四舍五入到特定的小数位数。例如,如果我们想将52.24568表示为三位小数,需要进行一些预处理。在本文中,我们将介绍几种技术,通过四舍五入将浮点数表示为特定的小数位数。在不同的方法中,使用类似C的格式化字符串、使用精度参数以及使用数学库中的round()函数是很重要的。让我们逐个来看。带有

使用递归方法在C++中找到链表倒数第n个节点 使用递归方法在C++中找到链表倒数第n个节点 Sep 15, 2023 pm 05:53 PM

给定一个单链表和正整数N作为输入。目标是使用递归找到给定列表中从末尾算起的第N个节点。如果输入列表有节点a→b→c→d→e→f并且N为4,那么倒数第4个节点将是c。我们将首先遍历直到列表中的最后一个节点以及从递归(回溯)增量计数返回时。当count等于N时,则返回指向当前节点的指针作为结果。让我们看看此的各种输入输出场景-输入-List:-1→5→7→12→2→96→33N=3输出−倒数第N个节点为:2解释−第三个节点是2。输入−列表:-12→53→8→19→20→96→33N=8输出-节点不存

找出在范围内不可被任何数整除的数字,使用C++ 找出在范围内不可被任何数整除的数字,使用C++ Sep 13, 2023 pm 09:21 PM

在本文中,我们将讨论查找1到n(给定)之间的数字的问题,这些数字不能被2到10之间的任何数字整除。让我们通过一些例子来理解这一点-Input:num=14Output:3Explanation:Therearethreenumbers,1,11,and13,whicharenotdivisible.Input:num=21Output:5Explanation:Therearefivenumbers1,11,13,17,and19,whicharenotdivisible.求解的方法简单方法如果

Java程序,用于检查一个数字是否可以被5整除 Java程序,用于检查一个数字是否可以被5整除 Sep 13, 2023 pm 09:01 PM

在数学中,5的整除规则规定,如果数字以0或5结尾,则它可以被5整除。还有另一种方法来确定5的整除规则,如果余数为0,则返回该数字能被5整除。mod(%)运算符通常在编程中用于整除。让我们举一个例子。给定的数字是525,该数字以5结尾,并且可以被5整除。给定的数字是7050,该数字以0结尾,并且可以被5整除。给定的数字是678,该数字不以0和5结尾,并且不能被5整除。在本文中,我们将解决该数字是否能被5整除的问题。算法以下步骤是我们将使用java.util.*包来获取原始数据类型的用户输入。从主类

真我 GT Neo6 定档 5 月 9 日!机圈首场 AI 数字人发布会 真我 GT Neo6 定档 5 月 9 日!机圈首场 AI 数字人发布会 May 08, 2024 pm 12:49 PM

5月7日,我手机厂商正式宣布,我公司GTNeo6发布会定档5月9日。我GTNoe6被定位为"性能风暴",旨在搅动中端机风云。除此之外,该发布会还将是手机圈首场AI数字人发布会。届时,真我realme副总裁、全球营销总裁、中国区总裁徐起将以数字人的形式出现在发布会上。数字人徐起根据官方介绍,真我GTNoe6代号为"飓风",更快更强,将挑战最强第三代骁龙8s旗舰,挑战同档最强产品力。日前,真我GTNeo6被发现直接在电商平台上架,部分核心配置曝光,显示该机不仅搭载了骁龙8s处理器,还支持120W闪充

微信角标数字怎么恢复 微信角标数字怎么恢复 Nov 29, 2023 pm 05:46 PM

恢复微信角标数字的方法:1、强制退出微信,重新启动;2、清除微信缓存;3、检查微信版本更新;4、卸载并重新安装微信。详细介绍:1、强制退出微信,重新启动,这是最常见的解决微信角标数字异常的方法,在微信界面中,点击左下角的“我”按钮,再点击右上角的“设置”按钮,打开设置界面,在设置界面中,选择“退出登录”,退出微信,等待几秒钟后,再次启动微信,通常情况下角标数字就会恢复正常等等。

See all articles