本文为数据结构之线性结构(应用实例),根据网课而整合的笔记。
栗子:
设计函数分别求两个一元多项式的乘积与和
该题的输入与输出样例:
求解思路
- 多项式表示
- 程序框架
- 读多项式
- 加法实现
- 乘法实现
- 多项式输出
一、多项式的表示
(仅表示非零项)
数组:
- 编程简单、调试容易
- 需要事先确定数组大小(若不确定会造成空间浪费)
链表:
- 动态性强
- 编程略为复杂、调试比较困难
PS:一种比较好的实现方法是:动态数组
下面介绍链表表示
数据结构设计
typedef struct PolyNode *Polynomial;
struct PolyNode{
int coef;/*系数*/
int expon;/*指数*/
Polynomial link;
};
二、程序框架搭建
int main()
{
读入多项式1
读入多项式2
乘法运算并输出
加法运算并输出
return 0;
}
需要设计的函数:
- 读入一个多项式
- 两多项式相乘
- 两多项式相加
- 多项式输出
int main()
{
Polynomial P1,P2,PP,PS;
P1 = ReadPoly();
P2 = ReadPoly();
PP = Mult(P1,P2);
PrintPoly(PP);
PS = Add(P1,P2);
PrintPoly(PS);
return 0;
}
三、如何读入多项式
输入数据格式:4 3 4 -5 2 6 1 -2 0(4为4组数,然后再循环一对一对读入)
Polynomial ReadPoly()
{
...
scanf("%d",&N);
...
while(N--){
scanf("%d %d",&c,&e);/*每对数据按指数递减顺序读入*/
Attach(c,e,&Rear<