网站制作网站建设报价,网站后台账户如何做会计分录,网站开发进度计划书,专题网站建设工作ListNode
刷LeetCode碰到一个简单链表题#xff0c;题目已经定义了链表节点ListNode
struct ListNode {int val; //定义val变量值#xff0c;存储节点值struct ListNode *next; //定义next指针#xff0c;指向下一个节点#xff0c;维持节点连接}在节点ListNode定义…ListNode
刷LeetCode碰到一个简单链表题题目已经定义了链表节点ListNode
struct ListNode {int val; //定义val变量值存储节点值struct ListNode *next; //定义next指针指向下一个节点维持节点连接}在节点ListNode定义中定义节点为结构变量。节点存储了两个变量value 和 next。value 是这个节点的值next 是指向下一节点的指针当 next 为空指针时这个节点是链表的最后一个节点。注意注意val只代表当前指针的值比如p-val表示p指针的指向的值而p-next表示链表下一个节点也是一个指针。构造函数包含两个参数 _value 和 _next 分别用来给节点赋值和指定下一节点
链表结构在Java中用需要自己定义一个ListNode类来生成链表对象。
自定义的ListNode链表类如下
public class ListNode {int val;ListNode next; // 下一个链表对象ListNode(int x) { val x; } //赋值链表的值}leetcode第2题链表做带进位加法 输入(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链表对象链表的值为0没有指向的节点ListNode dummyHead new ListNode(0);ListNode p l1, q l2, curr dummyHead;int carry 0;while (p ! null || q ! null) {//两个链表的同一位赋值给变量x和yint x (p ! null) ? p.val : 0;int y (q ! null) ? q.val : 0;int sum carry x y;carry sum / 10; //这里的carry循环时在上面这个式子用int sum carry x y;curr.next new ListNode(sum % 10); //如果结果是两位数各位数留在结果链表里curr curr.next;if (p ! null) p p.next;if (q ! null) q q.next;}//最后一位的进位如果有进位把进位放到下一个链表里if (carry 0) {curr.next new ListNode(carry);}return dummyHead.next;
}
}