链表问题10——两个单链表生成相加链表
题目
假设链表中每一个节点的值都在0-9之间,链表整体代表一个整数。
给定两个这种链表的头节点,请生成代表两个整数相加值的结果链表。
链表1 | 链表2 | 生成的新链表 |
9->3->7 | 6->3 | 1->0->0->0 |
思路
有一种实现方式是先分别算出两个链表所代表的整数,然后求出两个整数的和,最后将这个和转换成链表的形式。但是这种方法有一个很大的问题,链表的长度可以很长,表达一个很大的整数。因此转换成int类型时可能溢出,所有不推荐此方法。
方法一:利用栈结构求解
- 分别遍历两个链表,并压栈,这样就生成了两个链表值的逆序栈,分别记为s1和s2
- 将s1和s2同步弹出,并检查是否有进位,用ca表示,在这个过程中生成相加链表即可。
- 当s1和s2都为空时,还要关注进位信息是否为1,如果为1,还需要生成一个节点值为1的新节点。
- 返回新生产的结果链表即可。
源码
public class Node{public int value;public Node next;public Node(int data){this.value=data;}
}public Node addList1(Node head1,Node head2){Stack<Integer> s1=new Stack<Integer>();Stack<Integer> s1=new Stack<Integer>();while(head1!=null){s1.push(head1.value);head1=head1.next;}while(head2!=null){s2.push(head2.value);head2=head2.next;}//进位int ca=0;int n1=0;int n2=0;int n=0;Node node=null;Node pre=null;while(!s1.isEmpty()||!s2.isEmpty()){n1=s1.isEmpty()?0:s1.pop();n2=s2.isEmpty()?0:s2.pop();pre=node;n=n1+n2+ca;node=new Node(n%10);node.next=pre;ca=n/10;}if(ca==1){pre=node;node=new Node(1);node.next=pre;}return node;
}
链表问题10——两个单链表生成相加链表相关推荐
- 链表问题10——两个单链表生成相加链表(方法二)
题目 假设链表中每一个节点的值都在0-9之间,链表整体代表一个整数. 给定两个这种链表的头节点,请生成代表两个整数相加值的结果链表. 链表1 链表2 生成的新链表 9->3->7 6-&g ...
- 两个单链表生成相加链表
题目: 假设链表中每一个节点的值都在0~9之间,那么链表整体就可以代表一个整数. 例如:9 -> 3 -> 7,可以代表整数937. 给定两个这种链表的头节点head1和head2,请 ...
- 两个链表生成相加链表
两个链表生成相加链表 题目 思路 先将两个链表分别反转 从头部开始相加(注意进位及一个链表遍历完的情况) 再将相加后的链表反转 class ListNode:def __init__(self, x) ...
- 牛客题霸 [两个链表生成相加链表] C++题解/答案
牛客题霸 [两个链表生成相加链表] C++题解/答案 题目描述 假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数. 给定两个这种链表,请生成代表两个整数相加值的结果链表. ...
- 常考数据结构与算法:两个链表生成相加链表
题目描述 假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数. 给定两个这种链表,请生成代表两个整数相加值的结果链表. 例如:链表 1 为 9->3->7,链表 ...
- c++如何判断两个字符串是否相同?_链表 | 如何判断两个单链表(无环)是否交叉...
如何判断两个单链表(无环)是否交叉 单链表相交指的是两个链表存在完全重合的部分,如下图所示 在上图中,这两个链表相交于结点5,要求判断两个链表是否相交,如果相交,找出相交处的结点. 分析 Hash法 ...
- 数据结构中单链表的存储c语言,单链表一 - 数据结构与算法教程 - C语言网
1. 单链表概念&设计 单链表是一种链式存取的数据结构,,链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指 ...
- 链表相关的算法题大汇总 — 数据结构之链表奇思妙想
http://blog.csdn.net/lanxuezaipiao/article/details/22100021 基本函数(具体代码实现见后面) 1,构造节点 //定义节点类型 struct N ...
- 7_2判断两个单链表是否相交,若相交,求出第一个交点
转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4251372.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己 ...
最新文章
- 最新Java培训-NIO实战教程
- 终端打不开(右键和快捷键)?因为phthon?
- 机器学习 不均衡数据的处理方法
- 学习ASP.NET一定要学习ASP.NET AJAX吗?
- WiFi已攻占世界 芯片原厂、模组方案商盘点
- 【Keil C51】使用 watch1 来查看变量的值
- [转:作者: 出处:javaresearch ]选择JSF不选Struts的十大理由
- 【SpringMVC】SpringMVC基础-SpringMVC项目快速搭建、日志框架为logback
- oracle客户端中文乱码问题的解决
- strcat与strncat的C/C++实现
- arduino和轮毂电机接线_丰田Prius B电机技术解析
- 2012 国庆中秋黄金周流水帐
- Java学习笔记目录索引 (持续更新中)
- mmap文件做成html,mmap()映射到文件的一些总结
- 安川机器人仿真软件MOTOSIM EG
- 学习Spring之前要先学习什么?
- maven for Mac配置,idea 配置maven
- 【阿里云产品使用教程】1. 阿里云VPC ECS SLB NAT初体验 - 上
- 基于Bootstrap模板创建门户网站vue项目01
- 快学数据挖掘—数据探索—贡献度分析
热门文章
- 同样是AI技术,为什么只有一加6称得上“全速”旗舰?
- “围剿”杀人机器人,周志华、Hinton等57位学界大牛出手了
- 新手科普 | 探索机器学习模型,保障账户安全
- ELK不香了!我用Graylog
- 面试官:你说熟悉MySQL事务,那来谈谈事务的实现原理吧!
- 消灭 Java 代码的“坏味道”
- MySQL:教你学会如何做性能分析与查询优化
- Elasticsearch性能优化实战指南
- 自学机器学习课程怕踩雷?有人帮你选出了top 5优质课
- 获得杰青的北大教授,竟被本科生质疑硕士毕业双非高校也能任教?网友:荒唐!...