单链表相加
发布日期: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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Java 时间日期API总结
下一篇:Java JDBC

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年03月20日 16时18分36秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java网络编程期末试题_java网络编程面试题【其中一小部分】 2019-04-21
estore java_estore2 - WEB源码|JSP源码/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
php+跑buth,php 中函数获取可变参数的方法, 这个语法有点像 golang 语言中的 2019-04-21
cms 单点登录 php,Yii2 中实现单点登录的方法 2019-04-21
oracle自己运行,创建Oracle自动执行Job 2019-04-21
oracle报错00020,oracle启动 ORA-00020: maximum number of processes (%s) exceeded错误 2019-04-21
chmod 赋权所有_chmod 权限 命令详细用法 2019-04-21
html代码翻译_[译]您知道 HTML 的键盘标签吗? 2019-04-21
html抽奖代码_JavaScript高手之路:封装抽奖效果 2019-04-21
hadoop 3.3 一直停留在running wordcount_蛋价持续下跌,今日跌破3.3元大关!深秋季节价格还能反弹吗?... 2019-04-21
的流程图做完后如何保存_2019超火的半永久眉是哪款?做完后我们如何护理?... 2019-04-21
去除logo 高德地图api_深圳品牌logo升级如何保持原型的同时更具创新? 2019-04-21
二重积分转换成极坐标_二重积分转换极坐标r的范围如何确定? 2019-04-21
python中倒背如流_八字基础知识--倒背如流篇 2019-04-21
以太坊地址和公钥_以太坊地址是什么 2019-04-21