随笔 - 0  文章 - 3  trackbacks - 0
<2025年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

留言簿

文章档案(50)

搜索

  •  

最新评论

实验1:有两个指数递减的一元多项式,写一个程序先求这个多项式的和,再求它们的积,


我是按照指数递增来做的,


求积没有做,明天再做,


我没感觉到难,因为这只是前面的一个扩展罢了,



java 代码




  1. import java.io.*;   

  2. import java.util.StringTokenizer;   

  3.   

  4. class Node {   

  5.     public double factor;   

  6.     public int element;// factor是系数,element是指数   

  7.     public Node next;   

  8.     public Node(double factor, int element) {   

  9.         this(factor, element, null);   

  10.     }   

  11.     public Node(double factor, int element, Node next) {   

  12.         this.factor = factor;   

  13.         this.element = element;   

  14.         this.next = next;   

  15.     }   

  16. }   

  17.   

  18. class LinkedList {   

  19.     Node header;   

  20.     public LinkedList() {   

  21.         header = null;   

  22.     }   

  23.     public boolean isEmpty() {   

  24.         return header == null;   

  25.     }   

  26.     public void addtoTail(double d, int e) {   

  27.         if (isEmpty()) {   

  28.             header = new Node(d, e);   

  29.         } else {   

  30.             Node temp = header;   

  31.             while (temp.next != null) {   

  32.                 temp = temp.next;   

  33.             }   

  34.             Node node = new Node(d, e);   

  35.             temp.next = node;   

  36.         }   

  37.     }   

  38.   

  39.     public void printAll() {   

  40.         for (Node temp = header; temp != null; temp = temp.next) {   

  41.             if(temp.next==null){   

  42.                 System.out.print(temp.factor + "x" + temp.element );   

  43.             }   

  44.             else{   

  45.                 System.out.print(temp.factor + "x" + temp.element + "+");   

  46.             }   

  47.         }   

  48.         System.out.println();   

  49.     }   

  50.   

  51.     public void insertA(LinkedList la, LinkedList lb) { // A链表至少要有两个节点才可以插入   

  52.         Node heada = la.header;   

  53.         Node headb = lb.header;   

  54.         while (headb != null) {   

  55.             if (headb.element < la.header.element) {   

  56.                 int i = headb.element;   

  57.                 double j = headb.factor;   

  58.                 Node node = new Node(j, i);   

  59.                 node.next = heada;   

  60.                 la.header = node;   

  61.                 headb = headb.next;   

  62.             } else {   

  63.                 heada = la.header;   

  64.                 while (headb.element > heada.next.element   

  65.                         && heada.next.next != null) {   

  66.                     heada = heada.next;   

  67.                 }   

  68.                 if (heada.next.next != null) {   

  69.                     int i = headb.element;   

  70.                     double j = headb.factor;   

  71.                     Node node = new Node(j, i);   

  72.                     node.next = heada.next;   

  73.                     heada.next = node;   

  74.                     headb = headb.next;   

  75.                 } else if (heada.next.next == null) {   

  76.                     if (headb.element <= heada.next.element) {   

  77.                         int i = headb.element;   

  78.                         double j = headb.factor;   

  79.                         Node node = new Node(j, i);   

  80.                         node.next = heada.next;   

  81.                         heada.next = node;   

  82.                         headb = headb.next;   

  83.                     } else {   

  84.                         int i = headb.element;   

  85.                         double j = headb.factor;   

  86.                         Node node = new Node(j, i);   

  87.                         heada.next.next = node;   

  88.                         headb = headb.next;   

  89.                     }   

  90.                 }   

  91.             }   

  92.         }   

  93.     }   

  94.        

  95.     public void forAdd(LinkedList la){   

  96.         Node temp=la.header;   

  97.         while(temp.next!=null){   

  98.             if(temp.element==temp.next.element){   

  99.                 double i=temp.factor;   

  100.                 double j=temp.next.factor;   

  101.                 double m=i+j;   

  102.                 temp.factor=m;   

  103.                 temp.next=temp.next.next;   

  104.                    

  105.             }   

  106.             else{   

  107.                 temp=temp.next;   

  108.             }   

  109.         }   

  110.     }   

  111. }   

  112.   

  113. public class Multinomial {   

  114.     public static void main(String args[]) throws IOException {   

  115.         System.out.println("请输入两个多项式,要求多项式的系数由低到高排列,第一个多项式至少有两个节点");   

  116.         LinkedList la = new LinkedList();   

  117.         LinkedList lb = new LinkedList();   

  118.         for (int i = 3; i < 12; i = i + 2) {   

  119.             la.addtoTail(i, i);   

  120.         }   

  121.         la.printAll();   

  122.         for (int i = 2; i < 17; i = i + 3) {   

  123.             lb.addtoTail(i, i);   

  124.         }   

  125.         lb.printAll();   

  126.         la.insertA(la, lb);   

  127.         la.printAll();   

  128.         la.forAdd(la);   

  129.         la.printAll();   

  130.         System.out.println("以上为测试,请输入第一个多项式的系数和指数,用空格隔开");   

  131.            

  132.         LinkedList lc=new LinkedList();   

  133.         LinkedList ld=new LinkedList();   

  134.         BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));   

  135.         String s1=br1.readLine();   

  136.         StringTokenizer fen=new StringTokenizer(s1," ");   

  137.         int n1=fen.countTokens();   

  138.         int m1=n1/2;   

  139.         if(n1%2==1){   

  140.             System.out.println("您输入了不匹配的多项式");   

  141.         }   

  142.         double x1[]=new double[m1];   

  143.         int y1[]=new int[m1];   

  144.         for(int i=0; i<m1; i++){   

  145.             x1[i]=Double.parseDouble(fen.nextToken());   

  146.             y1[i]=Integer.parseInt(fen.nextToken());   

  147.             lc.addtoTail(x1[i], y1[i]);   

  148.         }   

  149.         System.out.println("第一个多项式为: ");   

  150.         lc.printAll();   

  151.            

  152.         System.out.println("请输入第二个多项式的系数和指数,用空格隔开");   

  153.         BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));   

  154.         String s2=br2.readLine();   

  155.         StringTokenizer fen2=new StringTokenizer(s2," ");   

  156.         int n2=fen2.countTokens();   

  157.         int m2=n2/2;   

  158.         if(n2%2==1){   

  159.             System.out.println("您输入了不匹配的多项式");   

  160.         }   

  161.         double x2[]=new double[m2];   

  162.         int y2[]=new int[m2];   

  163.         for(int i=0; i<m2; i++){   

  164.             x2[i]=Double.parseDouble(fen2.nextToken());   

  165.             y2[i]=Integer.parseInt(fen2.nextToken());   

  166.             ld.addtoTail(x2[i], y2[i]);   

  167.         }   

  168.         System.out.println("第二个多项式为: ");   

  169.         ld.printAll();   

  170.            

  171.         lc.insertA(lc, ld);   

  172.         System.out.print("插入后的多项式为: ");   

  173.         lc.printAll();   

  174.         lc.forAdd(lc);   

  175.         System.out.println("生成的多项式为: ");   

  176.         lc.printAll();   

  177.     }   

  178. }   



运行结果:


请输入两个多项式,要求多项式的系数由低到高排列,第一个多项式至少有两个节点

3.0x3+5.0x5+7.0x7+9.0x9+11.0x11

2.0x2+5.0x5+8.0x8+11.0x11+14.0x14

2.0x2+3.0x3+5.0x5+5.0x5+7.0x7+8.0x8+9.0x9+11.0x11+11.0x11+14.0x14


2.0x2+3.0x3+10.0x5+7.0x7+8.0x8+9.0x9+22.0x11+14.0x14

以上为测试,请输入第一个多项式的系数和指数,用空格隔开

3 2 4 3 7 5 9 7 10 9 12 10

第一个多项式为:

3.0x2+4.0x3+7.0x5+9.0x7+10.0x9+12.0x10

请输入第二个多项式的系数和指数,用空格隔开

2 2 3 3 4 4 7 6 8 7 9 10

第二个多项式为:

2.0x2+3.0x3+4.0x4+7.0x6+8.0x7+9.0x10

插入后的多项式为: 3.0x2+2.0x2+3.0x3+4.0x3+4.0x4+7.0x5+7.0x6+8.0x7+9.0x7+10.0x9+9.0x10+12.0x10

生成的多项式为:

5.0x2+7.0x3+4.0x4+7.0x5+7.0x6+17.0x7+10.0x9+21.0x10


主函数写的有点墨迹,


只看那几个有用的函数就好...


明天还要写乘积,那个要好写一些...


姨父送我的碟子收到了,


真是用心良苦...


7G的视频,


够我学到大四的了...


我告诉自己:


以后即使再忙,也要腾出时间来学英语,


周末即使再不想动,也要往家里打电话!!


 





评论也很精彩,请点击查看精彩评论。欢迎您也添加评论。查看详细 >>





JavaEye推荐
北京:优秀公司NHNChina招聘:WEB开发,系统管理,JAVA开发, DBA
广州:急招 JAVA开发经理/系统架构师(10-15K/月)也招聘java程序员
与Hibernate之父面对面-4月19日 Gavin King上海交流研讨会
高薪工作机会 美国法国上海 15-20k/月 J2EE SA



文章来源: http://xiaozhe.javaeye.com/blog/67445
posted on 2007-04-02 22:45 xiaozhe 阅读(190) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: