多项式乘积(Java)
来源:互联网 发布:mac用什么免费办公软件 编辑:程序博客网 时间:2024/06/17 23:18
1 多项式乘积的运算说明
做个有追求的成程序猿,哈哈。。其实是自己水平太菜啦,所以要想好好学学数据结构(网易云课堂上的数据结构课程。。。不是广告哦),就是这动手写写。
输入要求:
* 计算两个多项式的乘法 * 输入格式: * 先输入多项式的项数,然后系数、指数成对输入 * 如:4 3 4 5 3 9 2 3 0 * 表示:3x^4 + 5x^3 + 9x^2 + 3x^0 ;
输出结果:
2程序实现框架
1 表示多项式;
2 输入两个多项式;
3 两个多项式相乘;(p1多项式的每一项去乘p2的每一项,结果保存到新的多项式中,在新的多项式中注意合并同类型);
4 输出结果。
2.1 表示多项式;
首先多项式的每一项用一个类表示:
public class Node { //系数 private int factor ; //指数 private int index = 0 ; //下一个节点 private Node nextNode ; 。。。。。 //构造方法和get和set方法 。。。。。}
然后用一个链表来表示一个多项式,链表类是自己实现的,可以使用Java自带的LinkList等。
public class MyLinkArray { private Node head = null; private Node rear = null; /** * 为链表添加节点 * @param node * @return if return false, add fail ; * else add success ; */ public boolean add(Node node){ if(node==null){ return false ; } if(rear==null){ head = node ; rear = node ; return true; } rear.setNextNode(node); rear = node ; return true ; } public Node getHead() { return head; } public Node getRear() { return rear; } /** * 打印链表 * @return */ public boolean printlnLink(){ if(head!=null){ System.out.print(head.getFactor()+"x^"+head.getIndex()); Node node = head.getNextNode() ; while(node!=null){ System.out.print(" + "+node.getFactor()+"x^"+node.getIndex()); node = node.getNextNode(); } System.out.println(); }else{ return false ; } return true ; } /** * 根据指数将原来的链表排序 * @return */ public MyLinkArray sortLink(){ MyLinkArray link = new MyLinkArray() ; Node next = head ; while(next!=null){ Node sec = next.getNextNode(); while(sec!=null){ if(next.getIndex()<sec.getIndex()){ int temFac = next.getFactor(); next.setFactor(sec.getFactor()); sec.setFactor(temFac); int temIndex = next.getIndex(); next.setIndex(sec.getIndex()); sec.setIndex(temIndex); } sec = sec.getNextNode(); } link.add(next); next = next.getNextNode(); } return link ; }}
2.2 输入两个多项式
主要Scanner类来实现输入:
System.out.print("输入第一个多项式 :\n"); Scanner in=new Scanner(System.in); int n1=in.nextInt();
完成的输入方法:
/** * 输入多项式 * @param p1 * @param p2 */ private static void inputFactory(MyLinkArray p1, MyLinkArray p2) { System.out.print("输入第一个多项式 :\n"); Scanner in=new Scanner(System.in); int n1=in.nextInt(); while(n1-->0){ int f = in.nextInt(); int index = in.nextInt(); p1.add(new Node(f,index)); } System.out.print("输入第二个多项式 :\n"); Scanner in2=new Scanner(System.in); int n2=in2.nextInt(); while(n2-->0){ int f = in2.nextInt(); int index = in2.nextInt(); p2.add(new Node(f,index)); } }
2.3 乘积
废话不多说,直接上代码:
/** * 多项式相乘 * @param p1 * @param p2 * @return */ private static MyLinkArray multi(MyLinkArray p1, MyLinkArray p2) { MyLinkArray p = new MyLinkArray() ; Node n1 = p1.getHead(); while(n1!=null){ Node n2 = p2.getHead(); while(n2!=null){ MultiNode(n1,n2,p); n2 = n2.getNextNode(); } n1 = n1.getNextNode(); } return p; } /** * 节点相乘 合并添加到链表中 * @param n1 * @param n2 * @param p */ private static void MultiNode(Node n1, Node n2, MyLinkArray p) { //相乘 int factor = 0 ; int index = 0 ; factor = n1.getFactor()*n2.getFactor(); index = n1.getIndex() + n2.getIndex() ; Node result = new Node(factor,index) ; //插入 if(p.getRear()==null){ p.add(result); }else{ Node node = p.getHead(); boolean inserted = false ; while(!inserted){ if(result.getIndex()==node.getIndex()){ node.setFactor(node.getFactor()+result.getFactor()); inserted = true ; }else{ if(node==p.getRear()){ p.add(result); inserted = true ; }else{ node = node.getNextNode(); } } } } }
3 总结
以上实现,主要是用到了链表的实现,链表的遍历。这种方法应该可以实现大数和大数相乘。
Java源代码在这里,免费下载可以看看
0 0
- 多项式乘积(Java)
- 求取一元多项式乘积
- 数据结构---多项式的乘积与和(PTA)
- 蓝桥杯-最小乘积(java)
- [小米2015校招笔试]多项式乘积
- 一元多项式的乘积与和
- 链表计算多项式的和,乘积
- 计算两个一元多项式的乘积
- hdoj2006(java)求奇数的乘积
- 构建乘积数组(Java实现)
- 构建乘积数组(java版)
- hdu 2011 多项式求和(java)
- 【java】多项式计算(中缀转后缀)
- PAT 1009 Product of Polynomials (25)多项式乘积
- <PTA>一元多项式的求和和乘积运算解题报告
- 构建乘积数组 java
- 《算法入门经典》-最大乘积(java实现)
- 蓝桥杯 最小乘积【基本型】(java题解)
- 动态规划算法
- CRC 32 校验
- 替代CardView实现圆角图的第三方控件
- 《Spring技术内幕》学习笔记2——IoC定位Bean定义资源
- zabbix[0]-入门与初试
- 多项式乘积(Java)
- JMF-Java媒体框架
- 健康生活方式
- 代码加约束Masonry的使用(快速上手Autolayout)及MMPlaceHolder标尺插件的使用
- BOOST enable_shared_from_this
- 反演规则
- 进程间通信IPC
- ubuntu12.04安装mysql-connector-c-6.1.6和mysql-connector-cpp-1.1.6
- UIColor+Hex