大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
关于ListNode
public class ListNode{
int val;
ListNode next; //链表指向的下一个值的指针
ListNode(int x){val = x;} //这个方式赋值
}
我想到的几点事项
- 定义链表ListNode时,
- 链表的首个值不能为0,当首个参数为0时,代表着链表为空。
- 只需要定义一个ListNode xx = new ListNode(0);即可。即只定义一个空链表。
- 不需要定义长度 。
- 赋值时
- 通过xx.next = new ListNode(4);来赋值,注意此时是赋值给下一个指针指向的位置,此时此链表一个值,值为4。
- 通过一个链表指向原链表地址,赋值完成时,打印原链表的指针地址。获取所有值。(后面的打印想不太明白,有待研究)
- 取值时
- 取第一个值时,只需要xx.val即可。
- 取第二或之后的值时,需要xx = xx.next;int x = xx.val;这个方式取值。
下面是LeetCode第二题时的解,通过这个解来了解更容易理解。
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 两个已知链表对象ListNode l1, ListNode l2
输出:7 -> 0 -> 8
原因:342 + 465 = 807
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode xList = new ListNode(0);//上来链表为空,所以第一位为0
ListNode newList = xList;
System.out.println(xList + "==" + newList);
int curr = 0;
while(l1 != null || l2 != null){
//取值
int x = l1 != null?l1.val:0;
int y = l2 != null?l2.val:0;
//System.out.println(x + "==" + y);
//计算
int sum = curr + x + y;
//存值
curr = sum /10;//取整
newList.next = new ListNode(sum%10);//取余先给下一个位置赋值
//移动指针指向下一个值
newList = newList.next;
System.out.println(xList + "==" + newList + "==" + xList.next);
//System.out.println(newList.val);
//取下一个节点的指针
if(l1 != null)l1 = l1.next;
if(l2 != null)l2 = l2.next;
}
if(curr > 0){
newList.next = new ListNode(curr);
}
return xList.next;
}
}
打印出来的结果
ListNode@52cc8049==ListNode@52cc8049
ListNode@52cc8049==ListNode@133314b==ListNode@133314b ListNode@52cc8049==ListNode@b1bc7ed==ListNode@133314b ListNode@52cc8049==ListNode@7cd84586==ListNode@133314b
[7, 0, 8]
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/215891.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...