黑马程序员技术交流社区
标题:
java实现队列链表,求一元多项式的导数
[打印本页]
作者:
as604049322
时间:
2014-12-13 17:08
标题:
java实现队列链表,求一元多项式的导数
个人觉得题目要求的格式太丑,就做成了如下形式
f(x)=3x^4-5x^2+6x-2
f(x)'=12x^3-10x+6
源数据用链表存储指数和系数。
/*
设计函数求一元多项式的导数。
输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。
输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0
*/
class Polynomial//多项式
{
private static class PolyNode{
public int coef;//系数
public int expon;//指数
//public PolyNode previous;//上一个节点,加上这句可以做成双向链表
public PolyNode next;//下一个节点
public PolyNode(int coef,int expon){
this.coef=coef;
this.expon=expon;
}
public PolyNode addElement(int coef,int expon){
this.next=new PolyNode(coef,expon);
return this.next;
}
}
public static void main(String[] args) {
PolyNode srcLink=new PolyNode(3,4);
PolyNode pointer=srcLink.addElement(-5,2);
pointer=pointer.addElement(6,1);
pointer=pointer.addElement(-2,0);
pointer=null;//链表已经生成完毕,现在可以取消指针对尾节点的引用
System.out.print("f(x)=");
printlink(srcLink);
PolyNode destLink=getDerivatives(srcLink);
System.out.print("f(x)'=");
printlink(destLink);
}
public static PolyNode getDerivatives(PolyNode srcLink){
PolyNode destLink=null;//保存结果的头指针
PolyNode pointer=null;//用于生成链表的辅助指针
int destcoef,destexpon;//目标系数与目标指数
while(srcLink!=null){
if(srcLink.expon!=0){
destcoef=srcLink.expon*srcLink.coef;
destexpon=srcLink.expon-1;
if(destLink==null)
pointer=destLink=new PolyNode(destcoef,destexpon);
else
pointer=pointer.addElement(destcoef,destexpon);
}
srcLink=srcLink.next;
}
return destLink;
}
public static void printlink(PolyNode srcLink) {
//PolyNode srcLink=pointer;
while(srcLink!=null){
System.out.print(srcLink.coef);
if(srcLink.expon!=0){
if(srcLink.expon==1) System.out.print("x");
else System.out.print("x^"+srcLink.expon);
}
if(srcLink.next!=null&&srcLink.next.coef>0)
System.out.print("+");
srcLink=srcLink.next;//
}
System.out.println();
}
}
复制代码
作者:
斷灬dian
时间:
2014-12-28 23:27
谢谢分享
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2