多项式ADT

/*删除表的正确方法*/
/*assume header*/
void
DeleteList(List L)
{
    Position p,Tmp;
    p=L->Next;
    while(p != NULL)
    {
        Tmp=p->Next;
        free(p);
        p = Tmp;
    }
}//先free掉,然后再判断这个结点的Next是不是NULL,是就不做了
/*多项式ADT*/
/*多项式数组实现的类型声明*/
/*一个结构就可以表示。一个多项式*/
typedef struct{
    CoeffArray[MaxDegree+1];
    int HighPower;//表示这个数组的最高次
} * Polynomial;
/*将多项式初始化为0*/
void
ZeroPolynomial(Polynomial Poly)
{
    for(i=0;i <= MaxDegree ;i++)
    {
        Poly->CoeffArray[i]=0;
    }
    Poly->HighPower = 0;
}
/*两个多项式相加的过程*/
void
AddPolynomial(Polynomial Poly1,Polynomial Poly2,Polynomial PolySum)
{
    ZeroPolynomial(PolySum);
    MaxPower=Max2(Poly1->HighPower,Poly2->HighPower);
    for(i=0;i<=MaxPower;i++)
    {
        PolySum->CoeffArray[i] = Poly1->CoeffArray[i] + Poly2->CoeffAyyay[i];
    }
    PolySum->HighPower=MaxPower;
}
/*两个多项式相乘的过程*/
void
MultPolynomial(Polynomial Poly1,Polynomial Poly2,Polynomial PolyProd)
{
    ZeroPolynomial(PolyProd);
    PolyProd->HighPower = Poly1->HighPower * Poly2->HighPower;
    for(int i=0; i <= Poly1->HighPower; i++)
    {
        for(int j=0; j <= Poly2->HighPower; j++)
        {
            PolyProd->CoeffArray[i+j] += Poly1->CoeffArray[i] * Poly2->CoeffArray[j];
        }
    }
}

时间: 2024-11-27 18:23:51

多项式ADT的相关文章

多项式ADT笔记(数据结构c版)

项式ADT笔记设多项式为P=A1Xn1+A2Xn2+···AiXni //多项式ADT的数组实现 typedef struct { int CoeffArray[MaxDegree + 1];//各个多项式的系数A int HighPower; //最高的幂ni } * Polynomial; //将多项式初始化为零的过程 void ZeroPolynomial(Polynomial Poly) { int i; for( i = 0; i <= MaxDegree; i ++) Poly ->

表、栈和队列

表.栈和队列是最简单和最基本的三种数据结构——<数据结构与算法分析—— C 语言描述> 表 应用范畴: i. 多项式 ADT i. 基数排序(多趟桶式排序) 代码实现: i. 多重表 链表的游标实现 代码实现: 栈 栈又叫做 LIFO(后进先出)表——<数据结构与算法分析—— C 语言描述> 应用范畴: i. 平衡符号 i. 后缀表达式 有中缀表达式 s1 : ((2 + 3)* 8 + 5 + 3)* 6 总能转换成后缀表达式 s2 : 2 3 + 8 * 5 + 3 + 6 *

数据结构与算法分析-第3章

.title { text-align: center; margin-bottom: .2em } .subtitle { text-align: center; font-size: medium; font-weight: bold; margin-top: 0 } .todo { font-family: monospace; color: red } .done { font-family: monospace; color: green } .priority { font-fami

双链表&amp;链表合并&amp;多项式相加算法

//单链表的合并 //链表合并 //两个链表必须是有序的 #define Maxsize 5 typedef  int elemtype; typedef struct linklist { elemtype data; struct linklist *next; }Linklist; //建立链表1 Linklist *CreateList1 () { int i,data ; Linklist *head, *p, *q; head=p=(Linklist  *)malloc(sizeof

2017 ACM-ICPC 西安网络赛 F.Trig Function Chebyshev多项式

自己太菜,数学基础太差,这场比赛做的很糟糕.本来想吐槽出题人怎么都出很数学的题,现在回过头来想还是因为自己太垃圾,竞赛就是要多了解点东西. 找$f(cos(x))=cos(nx)$中$x^m$的系数模998244353. wolfram alpha查了这个函数无果,得到了一堆sinx和cosx以及一个复指数的方程,其实应该推个几项再用数列查询查查看的,然后就会知道是Chebyshev polynomials 查WIKI直接就有通项公式了.然后就比较简单的了. 连方程都看不出来就别想着推导公式了.

Eclipse ADT中的logcat不显示解决方法

Eclipse ADT中的logcat不显示解决方法: 1.在Eclipse界面中找到DDMS,然后找到device选项卡,在这个选项卡中选择reset adb,如果不行尝试方法2: 2.不用关闭eclipse和模拟器,在Android SDK的tools目录下有个 ddms.bat 批处理文件,运行这个文件可以启动DDMS,同时这里面有logcat,可以显示信息: 3.以上方法都不行,最终杀手锏就是重启eclipse,重启模拟器,记得在任务管理器中关闭adb.exe,这时应该就可以了. 4.用

Eclipse+ADT+Android SDK 搭建安卓开发环境

要求 必备知识 windows 7 基本操作. 运行环境 windows 7 下载地址 环境下载 最近开接触Android(安卓)嵌入式开发,首要问题是搭建Andoid开发环境,由于本人用的是windows7的笔记本,也就只能到Windows中搭建Android 开发环境了! 就搭建环境都花了比较长的时间, 在各种版本之间折腾了比较久的时间, 装好后SDK包更新又是一个比较大的麻烦(天朝的网络大家懂的--).下面把我的安装过程和经验分享个大家!! 安装JDK 这里可以参考我之前写的一篇关于安装J

Android Studio的下载和安装教程(从ADT到AS)

之前一直使用的是Android development tools(简称ADT),后来说是google对ADT不再提供支持,然后一直在考虑是否把自己电脑换成Android Studio(简称AS),从ADT到AS这个过程自己觉得软件安装真的伤不起,端午节第二天和第三天(也是今天),终于完成了从ADT到AS的转 变,OK,我还有很多要学习的地方. 下面我来介绍一下ADT的转变成AS: 1.第一次安装完之后模拟器根本启动不了(就算你刚新建的模拟器,他还是不能在启动APP时候没有可用的模拟器),而且用

eclipse + adt离线安装

eclipse4.5 + adt23.0.4 离线安装. 由于google的一些站点被屏蔽了,导致无法在线下载安装adt. 所以只能手动下载adt包,然后eclipse离线安装了. 1. 下载eclipse http://www.eclipse.org/downloads/ 2. 下载 adt23.0.4 http://download.csdn.net/detail/seamless_yang/8266939 3. 打开eclipse,Help -> Install New Software.