⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 poly.c

📁 清华大学出版的数据结构(C语言版)中书中所提到的所有C源程序的实现。
💻 C
字号:
/* This code doesn't really do much *//* Thus I haven't bothered testing it */#include "fatal.h"#define MaxDegree 100static intMax( int A, int B ){    return A > B ? A : B;}/* START: fig3_18.txt */        typedef struct        {            int CoeffArray[ MaxDegree + 1 ];            int HighPower;        } *Polynomial;/* END *//* START: fig3_19.txt */        void        ZeroPolynomial( Polynomial Poly )        {            int i;            for( i = 0; i <= MaxDegree; i++ )                Poly->CoeffArray[ i ] = 0;            Poly->HighPower = 0;        }/* END *//* START: fig3_20.txt */        void        AddPolynomial( const Polynomial Poly1, const Polynomial Poly2,                       Polynomial PolySum )        {            int i;            ZeroPolynomial( PolySum );            PolySum->HighPower = Max( Poly1->HighPower,                                      Poly2->HighPower );            for( i = PolySum->HighPower; i >= 0; i-- )                PolySum->CoeffArray[ i ] = Poly1->CoeffArray[ i ]                                               + Poly2->CoeffArray[ i ];        }/* END *//* START: fig3_21.txt */        void        MultPolynomial( const Polynomial Poly1,                        const Polynomial Poly2, Polynomial PolyProd )        {            int i, j;            ZeroPolynomial( PolyProd );            PolyProd->HighPower = Poly1->HighPower + Poly2->HighPower;            if( PolyProd->HighPower > MaxDegree )                Error( "Exceeded array size" );            else                for( i = 0; i <= Poly1->HighPower; i++ )                    for( j = 0; j <= Poly2->HighPower; j++ )                        PolyProd->CoeffArray[ i + j ] +=                                Poly1->CoeffArray[ i ] *                                Poly2->CoeffArray[ j ];        }/* END */#if 0/* START: fig3_23.txt */        typedef struct Node *PtrToNode;        struct Node        {            int Coefficient;            int Exponent;            PtrToNode Next;        };        typedef PtrToNode Polynomial;  /* Nodes sorted by exponent *//* END */#endifvoidPrintPoly( const Polynomial Q ){    int i;    for( i = Q->HighPower; i > 0; i-- )        printf( "%dx^%d + ", Q->CoeffArray[ i ], i );    printf( "%d\n", Q->CoeffArray[ 0 ] );}main( ){    Polynomial P, Q;    P = malloc( sizeof( *P ) );    Q = malloc( sizeof( *Q ) );    P->HighPower = 1; P->CoeffArray[ 0 ] = 1; P->CoeffArray[ 1 ] = 1;    MultPolynomial( P, P, Q );    MultPolynomial( Q, Q, P );    AddPolynomial( P, P, Q );    PrintPoly( Q );    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -