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 }
  • 相关阅读:
    前端面试题精选
    闭包、作用域、THIS、OOP
    Ubuntu,debian一键安装Mariadb
    两条命令实现nodejs快速安装
    HTML 5的革新——语义化标签section和article的区别
    uni-app之uni.showToast()image路径问题
    vue-cli4配置文件别名
    蓝湖使用方法
    Node组件——Express简介
    程序员最深情的告白——《致对象》
  • 原文地址:https://www.cnblogs.com/weixia-blog/p/7307372.html
Copyright © 2011-2022 走看看