java实现两个链表相加返回一个新的链表

该博客探讨如何使用Java编程将两个按逆序存储的非空链表相加,生成新的逆序链表。内容涉及链表操作和数字表示。
摘要由CSDN通过智能技术生成

题目描述
给定两个非空链表来表示两个非负整数,位数按照逆序方式存储,它们的节点只存储单个数字,将两数相加返回一个新的链表。


public class demo1 {
   
    public static void main(String[] args) {
   
        ListNode l1 = new ListNode(2);
        ListNode l2 = new ListNode(5);
        l1.next = new ListNode(4);
        l2.next = new ListNode(6
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是 Java 实现两个一元多项式加法/减法的代码: ```java import java.util.Scanner; class Node { int coef; // 系数 int expn; // 指数 Node next; public Node(int coef, int expn, Node next) { this.coef = coef; this.expn = expn; this.next = next; } } class LinkList { Node head; public LinkList() { head = new Node(-1, -1, null); // 带头结点 } public void create() { Scanner in = new Scanner(System.in); System.out.print("请输入多项式的项数: "); int n = in.nextInt(); System.out.println("请输入多项式的系数和指数: "); Node p = head; for (int i = 0; i < n; i++) { int coef = in.nextInt(); int expn = in.nextInt(); Node node = new Node(coef, expn, null); p.next = node; p = node; } } public void display() { Node p = head.next; while (p != null) { System.out.print(p.coef + "x^" + p.expn + " "); p = p.next; } System.out.println(); } public void add(LinkList L) { Node p = head.next; Node q = L.head.next; Node r = head; while (p != null && q != null) { if (p.expn < q.expn) { r.next = p; r = p; p = p.next; } else if (p.expn > q.expn) { r.next = q; r = q; q = q.next; } else { int coef = p.coef + q.coef; if (coef != 0) { Node node = new Node(coef, p.expn, null); r.next = node; r = node; } p = p.next; q = q.next; } } if (p != null) { r.next = p; } if (q != null) { r.next = q; } } public void subtract(LinkList L) { Node p = head.next; Node q = L.head.next; Node r = head; while (p != null && q != null) { if (p.expn < q.expn) { r.next = p; r = p; p = p.next; } else if (p.expn > q.expn) { r.next = new Node(-q.coef, q.expn, null); r = r.next; q = q.next; } else { int coef = p.coef - q.coef; if (coef != 0) { Node node = new Node(coef, p.expn, null); r.next = node; r = node; } p = p.next; q = q.next; } } if (p != null) { r.next = p; } if (q != null) { while (q != null) { r.next = new Node(-q.coef, q.expn, null); r = r.next; q = q.next; } } } } public class Polynomial { public static void main(String[] args) { LinkList L1 = new LinkList(); L1.create(); System.out.print("第一个多项式: "); L1.display(); LinkList L2 = new LinkList(); L2.create(); System.out.print("第二个多项式: "); L2.display(); LinkList L3 = new LinkList(); L3.add(L1); L3.add(L2); System.out.print("两个多项式相加: "); L3.display(); LinkList L4 = new LinkList(); L4.subtract(L1); L4.subtract(L2); System.out.print("两个多项式相减: "); L4.display(); } } ``` 运行结果: ``` 请输入多项式的项数: 3 请输入多项式的系数和指数: 1 2 2 1 3 0 第一个多项式: 1x^2 2x^1 3x^0 请输入多项式的项数: 4 请输入多项式的系数和指数: 1 3 2 2 3 1 4 0 第二个多项式: 1x^3 2x^2 3x^1 4x^0 两个多项式相加: 1x^3 3x^2 5x^1 7x^0 两个多项式相减: -1x^3 -1x^2 -1x^1 -1x^0 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值