单链表相加
发布日期:2022-02-14 16:09:31
浏览次数:29
分类:技术文章
本文共 2338 字,大约阅读时间需要 7 分钟。
public class SingleLinkList { private static class Data{ private int obj; private Data next; Data() { } Data(int obj){ this.obj = obj; } public void display() { if (this==null) { System.out.println("empty!!"); } Data current = this; while (current!=null) { System.out.print(current.obj+" -> "); current = current.next; } System.out.println(); } public void insertLast(int obj) { Data data = new Data(obj); if(this.obj==0){ this.obj = obj; return; /*由于每次是增加一个节点,所以对头结点进行初始化之后就要退出函数*/ } Data last = this; /*一般一个链表的头结点是不能动的,因此需要把头结点赋值给一个临时变量 这样在对链表进行访问的时候,就可以用这个临时变量进行逐个的访问,不对头结点产生影响*/ while(last.next!=null){ last = last.next; } last.next = data; } } private static Data addTwoLinkData(Data data1,Data data2) { if (data1==null||data2==null) { return null; } //保存节点返回用 Data data3 = new Data(); int flag = 0; int sum = 0; while (data1!=null&&data2!=null) { sum = data1.obj+data2.obj; if (sum<10) { if (flag==1) { if (sum+1==10) { flag = 1; data3.insertLast(sum+1-10); }else{ flag = 0; data3.insertLast(sum+1); } }else{ flag = 0; data3.insertLast(sum); } } if (sum>=10) { if (flag==1) { data3.insertLast(sum+1-10); }else{ data3.insertLast(sum-10); } flag = 1; } data1 = data1.next; data2 = data2.next; } if (data1==null&&data2!=null) { if (flag==1) { int s = data2.obj+1; if (s<10) { flag=0; data3.insertLast(s); }else{ flag = 1; data3.insertLast(s-10); } }else{ data3.insertLast(data2.obj); } } if (data2==null&&data1!=null) { if (flag==1) { int s = data1.obj+1; if (s<10) { flag=0; data3.insertLast(s); }else{ flag = 1; data3.insertLast(s-10); } }else{ data3.insertLast(data1.obj); } } //最后一位有进位,创建一个新节点 if (flag==1) { data3.insertLast(1); } return data3; } public static void main(String[] args) { //测试程序,链表1:1->8->3->6,链表2:1->2->3->4 Data data1 = new Data(); data1.insertLast(1); data1.insertLast(8); data1.insertLast(6); data1.insertLast(6); data1.display(); Data data2 = new Data(); data2.insertLast(1); data2.insertLast(2); data2.insertLast(3); //data2.insertLast(3); data2.display(); Data data3 = new Data(); data3 = addTwoLinkData(data1, data2); //打印我们返回的链表结果 data3.display(); }}
转载地址:https://blog.csdn.net/qq_29593573/article/details/83347717 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年03月20日 16时18分36秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java网络编程期末试题_java网络编程面试题【其中一小部分】
2019-04-21
java如何做表单校验_微信小程序实现表单校验功能
2019-04-21
matlab dwt2(),MATLAB小波变换指令及其功能介绍(超级有用)
2019-04-21
php sequelize,egg.js整合数据库ORM框架Sequelize
2019-04-21
php同时打开2个数据库,thinkphp3.2同时连接两个数据库的简单方法
2019-04-21
centos 开发php扩展,centos 安装php扩展redis
2019-04-21
cms 单点登录 php,Yii2 中实现单点登录的方法
2019-04-21
oracle自己运行,创建Oracle自动执行Job
2019-04-21
chmod 赋权所有_chmod 权限 命令详细用法
2019-04-21
html代码翻译_[译]您知道 HTML 的键盘标签吗?
2019-04-21
html抽奖代码_JavaScript高手之路:封装抽奖效果
2019-04-21
的流程图做完后如何保存_2019超火的半永久眉是哪款?做完后我们如何护理?...
2019-04-21
去除logo 高德地图api_深圳品牌logo升级如何保持原型的同时更具创新?
2019-04-21
二重积分转换成极坐标_二重积分转换极坐标r的范围如何确定?
2019-04-21
python中倒背如流_八字基础知识--倒背如流篇
2019-04-21
以太坊地址和公钥_以太坊地址是什么
2019-04-21