A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

个人觉得题目要求的格式太丑,就做成了如下形式
f(x)=3x^4-5x^2+6x-2
f(x)'=12x^3-10x+6
源数据用链表存储指数和系数。
  1. /*

  2. 设计函数求一元多项式的导数。

  3. 输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。

  4. 输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是0,但是表示为“0 0”。
  5. 输入样例:

  6. 3 4 -5 2 6 1 -2 0

  7. 输出样例:

  8. 12 3 -10 1 6 0

  9. */
  10. class  Polynomial//多项式
  11. {
  12.     private static class PolyNode{
  13.         public int coef;//系数
  14.         public int expon;//指数
  15.         //public PolyNode previous;//上一个节点,加上这句可以做成双向链表
  16.         public PolyNode next;//下一个节点
  17.         public PolyNode(int coef,int expon){
  18.             this.coef=coef;
  19.             this.expon=expon;
  20.         }
  21.         public PolyNode addElement(int coef,int expon){
  22.             this.next=new PolyNode(coef,expon);
  23.             return this.next;
  24.         }
  25.     }

  26.     public static void main(String[] args) {
  27.         PolyNode srcLink=new PolyNode(3,4);
  28.         PolyNode pointer=srcLink.addElement(-5,2);
  29.         pointer=pointer.addElement(6,1);
  30.         pointer=pointer.addElement(-2,0);
  31.         pointer=null;//链表已经生成完毕,现在可以取消指针对尾节点的引用
  32.         System.out.print("f(x)=");
  33.         printlink(srcLink);
  34.         PolyNode destLink=getDerivatives(srcLink);
  35.         System.out.print("f(x)'=");
  36.         printlink(destLink);

  37.     }
  38.    
  39.     public static PolyNode getDerivatives(PolyNode srcLink){
  40.         PolyNode destLink=null;//保存结果的头指针
  41.         PolyNode pointer=null;//用于生成链表的辅助指针
  42.         int destcoef,destexpon;//目标系数与目标指数
  43.         while(srcLink!=null){
  44.             if(srcLink.expon!=0){
  45.                 destcoef=srcLink.expon*srcLink.coef;
  46.                 destexpon=srcLink.expon-1;
  47.                 if(destLink==null)
  48.                     pointer=destLink=new PolyNode(destcoef,destexpon);
  49.                 else
  50.                     pointer=pointer.addElement(destcoef,destexpon);
  51.             }
  52.             srcLink=srcLink.next;
  53.         }
  54.         return destLink;
  55.    
  56.     }

  57.     public static void printlink(PolyNode srcLink) {
  58.         //PolyNode srcLink=pointer;
  59.         while(srcLink!=null){
  60.             System.out.print(srcLink.coef);
  61.             if(srcLink.expon!=0){
  62.                 if(srcLink.expon==1) System.out.print("x");
  63.                 else System.out.print("x^"+srcLink.expon);
  64.             }
  65.             if(srcLink.next!=null&&srcLink.next.coef>0)
  66.                 System.out.print("+");
  67.             srcLink=srcLink.next;//
  68.         }
  69.         System.out.println();
  70.     }
  71. }
复制代码

1 个回复

倒序浏览
谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马