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));
}
}
我来回答