zoukankan      html  css  js  c++  java
  • 多项式ADT加法乘法——数组实现

     1 /*
     2   多项式ADT数组实现
     3 */
     4 
     5 
     6 /*接口声明*/
     7 #ifndef _POLYNOMIAL_H
     8 #define _POLYNOMIAL_H
     9 
    10 #define MaxDegree 100      //指定多项式的最大指数
    11 
    12 struct node
    13 {
    14     int CoeffArray[ MaxDegree + 1 ];
    15     int HighPower;
    16 };
    17 
    18 struct node * Polynomial;
    19 
    20 /*操作集*/
    21 
    22 /*将多项式初始化为零*/
    23 void ZeroPolynomial( Polynomial Poly );
    24 
    25 /*两个多项式相加*/
    26 void AddPolynomial( const Polynomial Poly1, const Polynomial Poly2, Polynomial PolySum );
    27 
    28 /*两个多项式相乘*/
    29 void MulPolynomial( const Polynomial Poly1, const Polynomial Poly2, PolyNomial PolyProd );
    30 
    31 
    32 
    33 
    34 /*接口实现*/
    35 #include <stdlib.h>
    36 #include "polynomial.h"
    37 
    38 int Max( int A, int B );
    39 
    40 void ZeroPolynomial( Polynomial Poly )
    41 {
    42     for ( int i = 0; i <= MaxPolynomial; i++ )
    43         Poly->CoeffArray[ i ] = 0;
    44     Poly->HighPower = 0;
    45 }
    46 
    47 void AddPolynomial( const Polynomial Poly1, const Polynomial Poly2, Polynomial PolySum )
    48 {
    49     ZeroPolynomial( PolySum );
    50     PolySum->HighPower = Max( Poly1->HighPower, Poly2->HighPower );
    51     
    52     while ( int i = PolySum->HighPower; i >= 0; i-- )
    53         PolySum->CoeffArray[ i ] = Poly1->CoeffArray[ i ] + Poly2->CoeffArray[ i ];
    54 }
    55 
    56 void MulPolynomial( const Polynomial Poly1, const Polynomial Poly2, Polynomial PolyProd )
    57 {
    58     PolyProd->HighPower = Poly1->HighPower + Poly2->HighPower;
    59     if ( PolyProd->HighPower > MaxDegree )
    60     {
    61         printf( "数组溢出,退出程序
    " );
    62         exit( 1 );
    63     }
    64     
    65     for ( int i = 0; i <= Poly1->HighPower; i++ )
    66         for ( int j = 0; j <= Poly2->HighPower; j++ )
    67             PolyProd->CoeffArray[ i + j ] += Poly1->CoeffArray[ i ] * Poly2->CoeffArray[ j ];
    68 }
    69 
    70 int Max( int A, int B )
    71 {
    72     return A > B ? A : B;
    73 }
  • 相关阅读:
    Lambda表达式
    工具类:mybatis中使用Threadlocal开启session及关闭session
    构造函数
    window phone ListBox多选
    ZOJ 3681 ZJU2013年01月月赛F题 E Cup 2
    2012百度之星冬季赛第四场第二题 度熊的复仇
    HDU 4476 HDOJ Cut the rope
    HDU 4475 HDOJ Downward paths
    2012百度之星冬季赛第二场第二题 消去游戏I
    ZOJ 3684 ZJU2013年01月月赛I题 Destroy
  • 原文地址:https://www.cnblogs.com/weixia-blog/p/7307372.html
Copyright © 2011-2022 走看看