题目

假设链表中每一个节点的值都在0-9之间,链表整体代表一个整数。

给定两个这种链表的头节点,请生成代表两个整数相加值的结果链表。

链表1 链表2 生成的新链表
9->3->7 6->3 1->0->0->0

思路

有一种实现方式是先分别算出两个链表所代表的整数,然后求出两个整数的和,最后将这个和转换成链表的形式。但是这种方法有一个很大的问题,链表的长度可以很长,表达一个很大的整数。因此转换成int类型时可能溢出,所有不推荐此方法。

方法一:利用栈结构求解

  1. 分别遍历两个链表,并压栈,这样就生成了两个链表值的逆序栈,分别记为s1和s2
  2. 将s1和s2同步弹出,并检查是否有进位,用ca表示,在这个过程中生成相加链表即可。
  3. 当s1和s2都为空时,还要关注进位信息是否为1,如果为1,还需要生成一个节点值为1的新节点。
  4. 返回新生产的结果链表即可。

源码

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——两个单链表生成相加链表相关推荐

  1. 链表问题10——两个单链表生成相加链表(方法二)

    题目 假设链表中每一个节点的值都在0-9之间,链表整体代表一个整数. 给定两个这种链表的头节点,请生成代表两个整数相加值的结果链表. 链表1 链表2 生成的新链表 9->3->7 6-&g ...

  2. 两个单链表生成相加链表

    题目: 假设链表中每一个节点的值都在0~9之间,那么链表整体就可以代表一个整数.  例如:9 -> 3 -> 7,可以代表整数937.  给定两个这种链表的头节点head1和head2,请 ...

  3. 两个链表生成相加链表

    两个链表生成相加链表 题目 思路 先将两个链表分别反转 从头部开始相加(注意进位及一个链表遍历完的情况) 再将相加后的链表反转 class ListNode:def __init__(self, x) ...

  4. 牛客题霸 [两个链表生成相加链表] C++题解/答案

    牛客题霸 [两个链表生成相加链表] C++题解/答案 题目描述 假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数. 给定两个这种链表,请生成代表两个整数相加值的结果链表. ...

  5. 常考数据结构与算法:两个链表生成相加链表

    题目描述 假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数. 给定两个这种链表,请生成代表两个整数相加值的结果链表. 例如:链表 1 为 9->3->7,链表 ...

  6. c++如何判断两个字符串是否相同?_链表 | 如何判断两个单链表(无环)是否交叉...

    如何判断两个单链表(无环)是否交叉 单链表相交指的是两个链表存在完全重合的部分,如下图所示 在上图中,这两个链表相交于结点5,要求判断两个链表是否相交,如果相交,找出相交处的结点. 分析 Hash法 ...

  7. 数据结构中单链表的存储c语言,单链表一 - 数据结构与算法教程 - C语言网

    1. 单链表概念&设计 单链表是一种链式存取的数据结构,,链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指 ...

  8. 链表相关的算法题大汇总 — 数据结构之链表奇思妙想

    http://blog.csdn.net/lanxuezaipiao/article/details/22100021 基本函数(具体代码实现见后面) 1,构造节点 //定义节点类型 struct N ...

  9. 7_2判断两个单链表是否相交,若相交,求出第一个交点

    转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4251372.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己 ...

最新文章

  1. 最新Java培训-NIO实战教程
  2. 终端打不开(右键和快捷键)?因为phthon?
  3. 机器学习 不均衡数据的处理方法
  4. 学习ASP.NET一定要学习ASP.NET AJAX吗?
  5. WiFi已攻占世界 芯片原厂、模组方案商盘点
  6. 【Keil C51】使用 watch1 来查看变量的值
  7. [转:作者: 出处:javaresearch ]选择JSF不选Struts的十大理由
  8. 【SpringMVC】SpringMVC基础-SpringMVC项目快速搭建、日志框架为logback
  9. oracle客户端中文乱码问题的解决
  10. strcat与strncat的C/C++实现
  11. arduino和轮毂电机接线_丰田Prius B电机技术解析
  12. 2012 国庆中秋黄金周流水帐
  13. Java学习笔记目录索引 (持续更新中)
  14. mmap文件做成html,mmap()映射到文件的一些总结
  15. 安川机器人仿真软件MOTOSIM EG
  16. 学习Spring之前要先学习什么?
  17. maven for Mac配置,idea 配置maven
  18. 【阿里云产品使用教程】1. 阿里云VPC ECS SLB NAT初体验 - 上
  19. 基于Bootstrap模板创建门户网站vue项目01
  20. 快学数据挖掘—数据探索—贡献度分析

热门文章

  1. 同样是AI技术,为什么只有一加6称得上“全速”旗舰?
  2. “围剿”杀人机器人,周志华、Hinton等57位学界大牛出手了
  3. 新手科普 | 探索机器学习模型,保障账户安全
  4. ELK不香了!我用Graylog
  5. 面试官:你说熟悉MySQL事务,那来谈谈事务的实现原理吧!
  6. 消灭 Java 代码的“坏味道”
  7. MySQL:教你学会如何做性能分析与查询优化
  8. Elasticsearch性能优化实战指南
  9. 自学机器学习课程怕踩雷?有人帮你选出了top 5优质课
  10. 获得杰青的北大教授,竟被本科生质疑硕士毕业双非高校也能任教?网友:荒唐!...