鱼C论坛

 找回密码
 立即注册
查看: 3892|回复: 4

关于一元多项式的相加(单链表实现)

[复制链接]
发表于 2018-10-20 19:17:19 | 显示全部楼层 |阅读模式
30鱼币

import java.util.Scanner;

public class List {
       
        public Node ReadPloy(){                        //输入节点
                Node head ;
                Node rear = new Node();
                head = rear;
                Scanner in = new Scanner(System.in);
                int num = in.nextInt();
                for(int i=0;i<num;i++ ){
                        if(head==null){
                                Node n = new Node();
                                n.coef = in.nextInt();
                                n.expon = in.nextInt();
                                n.next = null;
                                head= n;
                                rear = n;
                        }else{
                                Node n = new Node();
                                n.coef = in.nextInt();
                                n.expon = in.nextInt();
                                n.next = null;
                                rear.next = n;
                                rear = n;
                        }
                }
                rear.next  = null;
                head = head.next;
                return head;
        }
        static void Attach(int c,int e,Node rear){     //把多项式的一个节点赋给rear节点的下一个
                Node p = new Node();
                p.coef = c;
                p.expon = e;
                p.next = null;
                rear.next = p;
                rear = p;
        }
        Node Add(Node a,Node b){                //两个多项式相加
                Node first,last;
                last = null;
                first = last;
                int sum;
                while(a!=null&&b!=null){
                        if(a.expon>b.expon){
                                Attach(a.coef, a.expon, last);
                                a = a.next;
                        }else if(a.expon<b.expon){
                                Attach(b.coef, b.expon, last);
                                b = b.next;
                        }else{
                                sum = a.coef+b.coef;
                                if(sum!=0){
                                        Attach(sum, a.expon, last);
                                        a = a.next;
                                        b = b.next;
                                }
                        }
                }
                while(a==null){
                        for(b = b.next;b!=null;b=a.next){
                                Attach(b.coef, b.expon, last);
                        }
                }
                while(b==null){
                        for(a=a.next;a!=null;a=a.next){
                                Attach(a.coef, a.expon, last);
                        }
                }
                last.next = null;
                first = first.next;
                return first;
        }
       
       
       
        static void PrintPloy(Node a){                //输出节点
                boolean flag = false;
                if(a==null){
                        System.out.println("0 0");
                }
                while(a!=null){
                        if(!flag){
                                flag = true;
                        }else{               
                                System.out.print(" ");
                        }
                        System.out.print(a.coef+" "+a.expon);
                        a = a.next;
                }
        }
        public static void main(String[] args) {
                List list = new List();
                Node a = list.ReadPloy();
                Node b = list.ReadPloy();
               
                PrintPloy(list.Add(a, b));
        }
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-10-20 19:19:12 | 显示全部楼层
1 2 3
1 2 3
Exception in thread "main" java.lang.NullPointerException
        at Test01.List.Attach(List.java:36)
        at Test01.List.Add(List.java:58)
        at Test01.List.main(List.java:101)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-10-20 19:20:42 | 显示全部楼层
输入结果为上面,我不清楚哪里出了错,是不是attach方法在参数传递的时候出了问题,请各位帮忙看一下,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-20 23:32:32 | 显示全部楼层
Java 不会,但是 Node 的定义在哪里??
$javac List.java
List.java:5: error: cannot find symbol
        public Node ReadPloy(){                        //输入节点
               ^
  symbol:   class Node
  location: class List
List.java:32: error: cannot find symbol
        static void Attach(int c,int e,Node rear){     //把多项式的一个节点赋给rear节点的下一个
                                       ^
  symbol:   class Node
  location: class List
List.java:40: error: cannot find symbol
        Node Add(Node a,Node b){                //两个多项式相加
                 ^
  symbol:   class Node
  location: class List
List.java:40: error: cannot find symbol
        Node Add(Node a,Node b){                //两个多项式相加
                        ^
  symbol:   class Node
  location: class List
List.java:40: error: cannot find symbol
        Node Add(Node a,Node b){                //两个多项式相加
        ^
  symbol:   class Node
  location: class List
List.java:78: error: cannot find symbol
        static void PrintPloy(Node a){                //输出节点
                              ^
  symbol:   class Node
  location: class List
List.java:6: error: cannot find symbol
                Node head ;
                ^
  symbol:   class Node
  location: class List
List.java:7: error: cannot find symbol
                Node rear = new Node();
                ^
  symbol:   class Node
  location: class List
List.java:7: error: cannot find symbol
                Node rear = new Node();
                                ^
  symbol:   class Node
  location: class List
List.java:13: error: cannot find symbol
                                Node n = new Node();
                                ^
  symbol:   class Node
  location: class List
List.java:13: error: cannot find symbol
                                Node n = new Node();
                                             ^
  symbol:   class Node
  location: class List
List.java:20: error: cannot find symbol
                                Node n = new Node();
                                ^
  symbol:   class Node
  location: class List
List.java:20: error: cannot find symbol
                                Node n = new Node();
                                             ^
  symbol:   class Node
  location: class List
List.java:33: error: cannot find symbol
                Node p = new Node();
                ^
  symbol:   class Node
  location: class List
List.java:33: error: cannot find symbol
                Node p = new Node();
                             ^
  symbol:   class Node
  location: class List
List.java:41: error: cannot find symbol
                Node first,last;
                ^
  symbol:   class Node
  location: class List
List.java:95: error: cannot find symbol
                Node a = list.ReadPloy();
                ^
  symbol:   class Node
  location: class List
List.java:96: error: cannot find symbol
                Node b = list.ReadPloy();
                ^
  symbol:   class Node
  location: class List
18 errors
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-10-21 17:24:25 | 显示全部楼层
claws0n 发表于 2018-10-20 23:32
Java 不会,但是 Node 的定义在哪里??

不好意思,忘记发了

public class Node{
        Node next;
        int coef;
        int expon;
       
        public Node() {
                super();
        }       
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 07:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表